Ich habe zwei Tabellen, die eingefügt werden müssen, wenn meine Anwendung ausgeführt wird.
Nehmen wir an, ich habe Tabellen wie folgt
Mein Problem ist das Datenvolumen.
Ich muss über 10.000 Zeilen zu tbl_FirstTable und über 500.000 Zeilen zu tbl_SecondTable einfügen.
Ich benutze das Entity Framework wie folgt.
%Vor% Das ist der Ort, an dem ich mit dem Fehler Time out exception
konfrontiert bin.
Ich denke, dass die Ausnahme gelöst wird, wenn ich den folgenden Code verwende.
Also habe ich es benutzt. Es hat gelöst, aber ich sehe einen anderen Fehler OutOfMemory Exception
.
Also habe ich die Lösungen gesucht, zum Glück habe ich unten Artikel gefunden.
Gemäß diesen Artikeln ändere ich meinen Code von Entity Framework in den klassischen ADO.net-Code.
%Vor%Schließlich führt es den Einfügeprozess in weniger als 15 Sekunden für mehr als 500.000 Zeilen durch.
Es gibt zwei Gründe, warum ich dieses Szenario posten kann.
Also, jede bessere Lösung wird geschätzt werden.
1) Verwenden Sie EF6.x, das eine viel bessere Leistung als EF5.x
hatHier finden Sie weitere Vorschläge (aus Masseneinfügung mit EF )
2) Halten Sie das aktive Kontextdiagramm klein, indem Sie für jede Arbeitseinheit einen neuen Kontext verwenden
3) Deaktivieren Sie AutoDetechChangesEnabled - context.Configuration.AutoDetectChangesEnabled = false;
4) Batching, in Ihrer Schleife, rufen Sie regelmäßig SaveChanges auf
Tags und Links sql-server c# entity-framework ado.net