我需要从CSV文件中导入大约3万行数据到我的SQL数据库,但这需要20分钟的时间。
通过分析器进行故障排除后发现,DbSet.Add花费了最多的时间,但为什么呢?
我有以下Entity Framework Code-First类:
public class Article
{
// About 20 properties, each property doesn't store excessive amounts of data
}
public class Database : DbContext
{
public DbSet<Article> Articles { get; set; }
}
我的for循环中,对于每个条目我都会执行以下操作:
db.Articles.Add(article);
在 for 循环之外,我执行以下操作:
db.SaveChanges();
它连接到我的本地SQLExpress服务器,但我猜在调用SaveChanges之前没有任何东西被写入,所以我想服务器不会是问题....
db.Configuration.ValidateOnSaveEnabled = false; db.Configuration.AutoDetectChangesEnabled = false;
将会获得巨大的性能提升。但您必须确认这些值是正确的。 - Kervin Ramen