>提昇實體框架插入大型數據集
在實體框架中的大規模數據插入可以導致大量的性能瓶頸和交易超時。 本文概述了優化此過程的策略。>
>最小化調用:SaveChanges()
在每個插入大大降低效率之後,重複調用
SaveChanges()
SaveChanges()
SaveChanges()
savechanges()間隔,然後處置並重新創建上下文以釋放隨附的實體。 密鑰性能調整參數:>
<code class="language-csharp">using (TransactionScope scope = new TransactionScope()) { MyDbContext context = null; try { context = new MyDbContext(); context.Configuration.AutoDetectChangesEnabled = false; int count = 0; foreach (var entityToInsert in largeDataset) { ++count; context = AddToContext(context, entityToInsert, count, 100, true); } context.SaveChanges(); } finally { if (context != null) context.Dispose(); } scope.Complete(); } private MyDbContext AddToContext(MyDbContext context, Entity entity, int count, int batchSize, bool recycleContext) { context.Set<Entity>().Add(entity); if (count % batchSize == 0) { context.SaveChanges(); if (recycleContext) { context.Dispose(); context = new MyDbContext(); context.Configuration.AutoDetectChangesEnabled = false; } } return context; }</code>
:
>嘗試使用值(例如100-1000)來找到系統的最佳批處理大小。batchSize
:recycleContext
的理想頻率呼叫您的數據捲和數據庫配置。 以上是如何優化大型數據集的實體框架插入並避免超時?的詳細內容。更多資訊請關注PHP中文網其他相關文章!