Maison >base de données >tutoriel mysql >Comment puis-je optimiser Entity Framework pour l'insertion de données à grand volume ?
Augmenter la vitesse d'insertion des données d'Entity Framework
L'insertion de données volumineuses dans Entity Framework nécessite des techniques optimisées. Cet article explore les méthodes les plus efficaces pour atteindre des vitesses d'insertion rapides.
Le piège des SaveChanges()
appels fréquents
Appeler SaveChanges()
pour chaque enregistrement est un goulot d'étranglement majeur en termes de performances. Pour maximiser la vitesse, évitez cette pratique. Considérez ces alternatives :
Lot SaveChanges()
:
SaveChanges()
appel pour valider toutes les insertions simultanément.Périodique SaveChanges()
:
SaveChanges()
après chaque lot.Recyclage contextuel :
DbContext
après chaque SaveChanges()
et créez-en un nouveau. Cela évite l'accumulation d'entités suivies, ce qui peut avoir un impact significatif sur les performances au fil du temps.Code illustratif :
Cet exemple présente une stratégie d'insertion efficace :
<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 someCollectionOfEntitiesToInsert) { ++count; context = AddToContext(context, entityToInsert, count, 100, true); } context.SaveChanges(); } finally { if (context != null) context.Dispose(); } scope.Complete(); }</code>
Résultats de référence :
Un test impliquant 560 000 entités a donné ces résultats :
SaveChanges()
: Plusieurs heures (extrêmement lent)Ces résultats indiquent que les SaveChanges()
périodiques avec élimination contextuelle offrent les meilleures performances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!