Steigerung der Entitäts -Framework -Leistung mit großen Datensätzen
Dateninsertion in großem Maßstab im Entitätsgerüst kann zu erheblichen Leistungs Engpässen und Transaktionszeitüberschreitungen führen. Dieser Artikel beschreibt Strategien zur Optimierung dieses Prozesses.
minimieren Sie SaveChanges()
Anrufe:
wiederholte Aufrufe zu SaveChanges()
nach jeder Einfügung verringern die Effizienz drastisch. Verwenden Sie stattdessen diese Techniken:
SaveChanges()
erst einmal, nachdem alle Datensätze hinzugefügt wurden. SaveChanges()
Effiziente Bulk Insert Beispiel:
Der folgende Code zeigt ein leistungsstarkes Masseneinsatzmuster:
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; }
Parameter für die wichtigste Leistung der Leistung:
batchSize
: recycleContext
: SaveChanges()
Frequenz: SaveChanges()
Bestimmen Sie sorgfältig die ideale Häufigkeit von Durch die Implementierung dieser Best Practices können Sie die Leistung des Entity -Frameworks drastisch verbessern und Zeitüberschreitungen verhindern, wenn Sie mit großen Datensätzen arbeiten.
Das obige ist der detaillierte Inhalt vonWie kann ich Entity -Framework -Einfügungen für große Datensätze optimieren und Zeitüberschreitungen vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!