2011-04-01 94 views
0

我需要使用Entity Framework向表(表:'文件',服務器:mysql)插入大量數據。實體框架插入優化

'文件' 表的定義:
-Id,INT,主鍵,AUTO_INCREMENT
雜牌,VARCHAR(100)

現在我使用這樣的代碼:

TestDatabaseEntities entities = new TestDatabaseEntities() 

for (int i = 0; i < 100000; ++i) 
{ 
    File f = new File(); 
    f.Name = "test"; 

    entities.File.AddObject(f); 
} 

entities.SaveChanges(SaveOptions.AcceptAllChangesAfterSave); 

我不需要獲取插入值的ID。 我如何改善插入?

回答

1

您無法改進它,因爲EF不提供任何優化或命令批處理。實體框架不是處理大數據批次的好工具。如果您只需要使用存儲過程來初始化100.000條記錄,但是如果您需要插入100.000條不同的記錄,則通過直接使用ADO.NET並在單個DbCommand中執行100多個插入,您將獲得更好的結果。 EF總是會慢100倍,因爲它將執行每個插入程序到數據庫的單獨往返。