2017-07-03 31 views
0

看到我的代碼我如何在db中添加多個數據。EF6:添加多個數據到db或批量操作

List<Employee> oEmp = new List<Employee> 
{ 
    new Employee{Name="New employee2", Salary=5000}, 
    new Employee{Name="New employee3", Salary=6000}, 
    new Employee{Name="New employee4", Salary=7000} 
}; 

using (var ctx = new TestEFContext()) 
{ 
    foreach (Employee emp in oEmp) 
    { 
     ctx.Employees.Add(emp); 
    } 
    ctx.SaveChanges(); 
} 

只是好奇,知道如何EF6插入多個數據?它會一次將多個數據插入到數據庫中,還是一個接一個地在內部添加數據?

上面的代碼可以考慮做批量插入還是批量插入完全不同?

我看到人們使用許多不同的擴展名與EF進行批量插入。這裏有一個鏈接https://stackoverflow.com/a/43979807/6188148

所以我有兩個問題在這篇文章。請詳細回答兩個問題。

1)EF如何在db中插入多個數據.....一次或在窗簾後面發生不同的事情?

2)我在表中插入多個數據的方式....是否會考慮批量插入或批量插入是不同的?

感謝

回答

0

免責聲明:我是這個項目的所有者Entity Framework Extensions

如何EF插入多發數據DB .....一氣呵成或不同的東西發生幕後?

EF爲插入的每個實體執行數據庫往返。

因此,如果您插入5000個實體,將執行5000次數據庫往返。

無論使用的實體數量如何,始終使用相同的策略。

我在表中插入多個數據的方式....將它考慮爲 批量插入或批量插入是不同的嗎?

批量插入庫是完全不同的。他們讀取模型並使用SqlBulkCopy來執行Bulk Insert。

您的代碼將針對每個實體進行數據庫往返,當涉及數千個實體時,這種實體的運行速度會很慢。

我應該用AddRange代替Add嗎?

是的,添加多個實體時,AddRange只會檢測一次,這會顯着提高在上下文中添加實體的性能。