Ich verwende LINQ to SQL, um alte DBF-Dateien in MSSQL zu importieren. Ich lese alle Zeilen und füge sie der Datenbank hinzu, indem ich ctx.MyTable.InsertOnSubmit(row)
Nachdem die Lesephase abgeschlossen ist, habe ich etwa 100 000 ausstehende Einsätze. ctx.SubmitChanges()
dauert natürlich sehr lange.
Gibt es eine Möglichkeit, den Fortschritt der ctx.submitchanges()
? Kann ctx.Log
irgendwie für diesen Zweck verwendet werden?
Update : Ist es möglich, die ctx.GetChangeSet().Inserts.Count
und verfolgen Sie Einfügeanweisungen mit dem Log?
Aufteilung ctx.SubmitChanges()
in kleinere Stücke aufzuteilen, funktioniert bei mir nicht, denn ich brauche eine Transaktion, alles oder nichts.
Update 2: Ich habe eine schöne Klasse ActionTextWriter gefunden, mit der ich versuchen werde, Einfügungen zu zählen.
http://damieng.com/blog/2008/07/30/linq-to-sql-log-to-debug-window-file-memory-or-multiple-writers
Update 3:
Ich habe einen ersten Code-Prototyp erstellt, der nicht optimiert ist. Es scheint zu funktionieren :)
ctx.Log = new ActionTextWriter(s => {
counter += s.Split(' ').Count(w => w.ToUpper() == "INSERT");
ReportProgress(counter);
});
0 Stimmen
Ich habe die gleiche Frage: stackoverflow.com/questions/648379/