對於批量插入/更新/刪除操作,實體框架可能非常慢。即使通常建議的調整關閉AutoDetectChanges和/或ValidateOnSaveEnabled並不總是有幫助。Z.EntityFramework.Extensions是否有非商業的替代方案?
我碰到過NuGet上的Z.EntityFramework.Extensions,但它似乎是一個商業產品,它只會在一段時間內工作。
https://www.nuget.org/packages/Z.EntityFramework.Extensions/
到目前爲止,我真的只需要BulkInsert(),BulkUpdate()和BulkDelete()。
我的問題是:
有沒有可靠的非商業庫,但這幾乎相同Z.EntityFramework.Extensions?
感謝您的任何提示!
對於批量更新和刪除您可以使用https:// github上的.com/loresoft/EntityFramework.Extended。對於批量插入 - 只需每100個左右的實體創建一個新的上下文。所以創建上下文,插入100,保存更改。然後創建一個新的,插入下一個100,保存更改等。將所有這些包含在事務範圍中。這不是真正的批量插入,但會比在同一個上下文實例中插入所有實體要快得多。 – Evk
ORM通常不適用於批量操作,更不用說批量插入。這就像用鑷子運輸一整車的小石子。你不能用任何擴展名來覆蓋它。批量插入的最佳選擇是使用SqlBulkCopy來執行* real *,最小化日誌記錄的流式批量插入操作。如果你想執行批量更新,只需使用適當的UPDATE語句。如果您想從外部源* UPSERT *,將所有內容導入登臺表並使用MERGE更新目標表 –
換句話說,您正在尋找可將不可靠,不安全,不可擴展的過程轉換爲可靠一。爲什麼不從一開始就使用可靠的可擴展流程? –