我必須從一個CSV文件導入約30k行到我的SQL數據庫,這可悲的是需要20分鐘。如何加快DbSet.Add()?
使用Profiler進行故障診斷表明DbSet.Add佔用了大部分時間,但是爲什麼?
我有這些實體框架代碼優先類:
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服務器連接,但我猜想沒有任何東西寫到Sav eChanges被稱爲所以我猜服務器不會是問題....
你好。你是否擺脫了實體框架或與EF一起使用了sqlbulkcopy?我得到了完全相同的問題.Add() – 2011-03-29 08:10:23
如果你設置這些: `db.Configuration.ValidateOnSaveEnabled = false; db.Configuration.AutoDetectChangesEnabled = false;` 有一個巨大的性能增益。你必須確保你的價值觀堅韌。 – 2011-03-29 11:19:10
在註釋中使用反引號(`)作爲代碼。看起來很有趣,我稍後會研究這些屬性... – 2011-03-29 11:24:27