>提升实体框架插入大型数据集
在实体框架中的大规模数据插入可以导致大量的性能瓶颈和交易超时。 本文概述了优化此过程的策略。>
>最小化调用: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中文网其他相关文章!