【发布时间】:2019-02-14 10:53:23
【问题描述】:
我正在尝试一个使用 ASP.Net MVC 的项目,并且有一个大型 CSV 文件,我想将它保存到 LocalDB。
我一直在关注这个教程(之前的都是关于 MVC 的):https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/introduction/creating-a-connection-string
现在我想将数据添加到我已设置的数据库中,我想从 csv 文件中读取这些数据,然后将其保存到我的数据库中。
我试过这个:https://www.aspsnippets.com/Articles/Upload-Read-and-Display-CSV-file-Text-File-data-in-ASPNet-MVC.aspx 但是当我尝试上传我的文件时,我得到一个错误,我的文件太大了?
如果它可以自动化,我会喜欢它,这样当我启动我的应用程序时,数据库将被我的 csv 文件中的数据填充(如果它已经被填充,它将不再这样做)或者只是某种方式编码,以便我可以将 csv 文件中的数据添加到数据库 (LocalDB)。
protected override void Seed(ProductsDBContext context)
{
Assembly assembly = Assembly.GetExecutingAssembly();
string resourceName = "WebbApplication.App_Data.SeedData.price_detail.csv";
using (Stream stream = assembly.GetManifestResourceStream(resourceName))
{
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
CsvReader csvReader = new CsvReader(reader);
var products = csvReader.GetRecords<PriceDetail>().ToArray();
context.PriceDetails.AddOrUpdate(c => c.PriceValueId, products);
}
}
}
【问题讨论】:
-
所以您想保存 CSV 的内容而不是整个文件?我假设您已经拥有与 CSV 中的数据相关的模型?
-
来自 V N Karthikeyan:请检查此链接是否符合您的目的:telerik.com/blogs/upload-large-files-asp-net-radasyncupload
-
为什么要上传文件?应用程序启动后,您不能将其读入内存吗?然后您可以创建一个 DbContext 并使用 Seed 方法将数据从 .csv 读取到您的数据库。像这样:davepaquette.com/archive/2014/03/18/…
-
@LeonidasFett 你试过这个吗?我已经按照本教程进行操作,但是当我尝试使用 update-database 命令时出现错误:“值不能为空。参数名称:流”。你不会知道怎么了?
-
请使用引发异常的代码更新您的答案。
标签: c# asp.net-mvc entity-framework csv