[英]How to increase performance with a foreign key in a large query with Entity Framework?
[英]How to increase database insert performance with Entity Framework
我的第一個項目是實體框架和SQL Server Compact。
該數據庫大約有15個表,所有表都具有指向其他表的外鍵。 我必須讀取數千個XML文件並將其數據導入數據庫。 數據庫結構反映了XML文件結構。 表的層次結構最多包含5個級別。 因此,對於“頂部”表中的每條記錄,我必須在基礎表中插入一個或多個。
我正在使用Entity Framework進行插入,並且可以正常工作,但是性能非常差::。我認為主要問題是,對於大多數記錄,必須回讀ID才能將其用於基礎表中的記錄。
另一件事是-如果我知道的話-實體框架使用單獨的命令插入每個記錄。
有沒有辦法顯着提高性能?
謝謝
使用SQL Compact批量插入庫庫可批量插入數據。
如果您需要更新任何記錄,請使用以下技術:
首先,請確保使用AddRange或替代解決方案,以確保不會由於DetectChanges方法而導致性能下降。
請參閱: http : //entityframework.net/improve-ef-add-performance
免責聲明 :我是Entity Framework Extensions的所有者
該庫支持所有主要提供程序,包括SQL Server Compact
默認情況下,BulkInsert自動獲取插入的行的ID。
該庫使您可以執行方案所需的所有批量操作:
例
// 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.