[英]Simple bulk delete using EntityFramework.Extended throws syntax error
[英]Bulk insert using EntityFramework Extended
根據此,在實體批量插入可以使用下面的代碼進行:
var customers = GetCustomers();
db.Customers.AddRange(customers);
db.SaveChanges();
我使用 SQL Profiler 來驗證執行了多少插入查詢,我看到列表的每個元素都有一個插入。
為什么?
這就是 EF6 執行“批量”插入的方式,它不是批量插入,而是逐行插入。 結果表現很糟糕。
請改用EF.BulkInsert或EFUtilities 。
更新:
DbSet<T>.AddRange()
是內置 API 的一部分,這樣您就不會使用 EF.Extended 或任何其他 3rd 方庫。
添加范圍
添加范圍不執行 BulkInsert,它只是在將所有實體添加到集合后 DetectChanges 一次。
DetectChange 方法可能非常慢。
正如您所注意到的,它在數據庫中一一保存實體,這非常慢。
EF擴展
不再支持此庫,並且沒有批量插入功能。
批量插入庫
支持批量插入的三個主要庫:
請注意,兩個免費庫都不支持所有繼承和關聯。
免責聲明:我是實體框架擴展項目的所有者
除了批量插入之外,該庫還允許您執行所有批量操作:
例子:
// Easy to use
context.BulkSaveChanges();
// Easy to customize
context.BulkSaveChanges(bulk => bulk.BatchSize = 100);
// Perform Bulk Operations
context.BulkDelete(customers);
context.BulkInsert(customers);
context.BulkUpdate(customers);
// Customize Primary Key
context.BulkMerge(customers, operation => {
operation.ColumnPrimaryKeyExpression =
customer => customer.Code;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.