1

我有一個簡單的console app寫在C#VS.NET 2012。我使用了一個簡單的數據庫Entity Framework 5(模型第一)。我有兩張桌子,客戶電子郵件。每個電子郵件記錄都有一個客戶記錄的參考。插入隨着時間變得越來越慢?

我創建客戶和電子郵件對象,將它們保存到EF上下文中的集合中,並且在創建了1000條記錄後,我會調用上下文的保存更改。 1000的批次變得越來越慢,從1分鐘開始1000,然後是第9000個記錄,批量1000需要4分鐘才能完成。

我一次只讀一行CSV文件中的數據,在每行上執行簡單拆分,然後構造簡單對象。

我的問題是這是否是EF5,或者如果我在數據庫中缺少index?我沒有做其他預處理。我正在使用SQL Server 1012

+0

檢查禁用物體的軌跡[這個答案](http://stackoverflow.com/a/5942176/60108) – Eranga

回答

2

你的DbContext追蹤所有物件,即使它們被保存後。 DbContext的大小可能是導致您的應用程序變慢的原因。

我建議處理DbContext並在1000次插入後創建新的DbContext

+0

這種改進的東西,但它仍然是3倍慢使用SQL輔助類和存儲的特效。但還有另一個問題,似乎沒有在每個新記錄上調用保存,對該上下文的查詢無法看到新添加的和尚未保存的記錄,這是否屬實? – yarning

0

您可以使用此

context.Configuration.AutoDetectChangesEnabled = false; 
相關問題