【发布时间】:2016-08-12 20:15:22
【问题描述】:
我正在尝试让我的 asp.net WebAPI Web 服务读取 .csv 并使用实体框架更新数据库。 .csv 文件大约有 20,000-30,000 行。
到目前为止,我正在使用TextfieldParser 读取.csv,.csv 文件的每一行我创建一个新对象,然后将对象添加到 EF 上下文中。
将所有行添加到上下文后,我会调用db.SaveChanges();
观察控制台我注意到它为每一行调用一个更新语句......这需要很长时间。有没有更好更有效的方法来实现这一点?
if (filetype == "xxx")
{
using (TextFieldParser csvReader = new TextFieldParser(downloadFolder + fileName))
{
csvReader.SetDelimiters(new string[] { "," });
csvReader.HasFieldsEnclosedInQuotes = true;
int rowCount = 1;
while (!csvReader.EndOfData)
{
string[] fieldData = csvReader.ReadFields();
//skip header row
if (rowCount != 1)
{
var t = new GMI_adatpos
{
PACCT = fieldData[3]
};
db.GMI_adatpos.Add(t);
}
rowCount++;
}
}
}
db.SaveChanges();
【问题讨论】:
-
更新语句?这应该生成插入语句。什么是“很长时间”?你不会在眨眼之间得到它。您的实际期望是什么?
标签: sql-server entity-framework asp.net-web-api