Ich verwende LINQ to SQL, um alte DBF-Dateien in MSSQL zu importieren. Ich lese alle Zeilen und füge sie in die Datenbank mit ctx.MyTable.InsertOnSubmit(row)
LINQ to SQL SubmitChangess() Fortschritt
Nach dem Lesen Phase abgeschlossen ist, habe ich rund 100 000 ausstehende Einsätze. ctx.SubmitChanges()
dauert natürlich lange.
Gibt es eine Möglichkeit, den Fortschritt der ctx.submitchanges()
zu verfolgen? Kann ctx.Log
irgendwie für diesen Zweck verwendet werden?
Aktualisierung: Ist es möglich, ctx.GetChangeSet().Inserts.Count
zu verwenden und Einfügeanweisungen mithilfe des Protokolls nachzuverfolgen?
Teilen ctx.SubmitChanges()
in kleinere Stücke funktioniert nicht für mich, weil ich Transaktion, alles oder nichts brauche.
Update 2: Ich habe nette Klasse ActionTextWriter gefunden, mit denen ich versuchen werde, Einsätze 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 ersten Code Prototyp bauen habe, ist es nicht optimiert. Es scheint zu funktionieren :)
ctx.Log = new ActionTextWriter(s => {
counter += s.Split(' ').Count(w => w.ToUpper() == "INSERT");
ReportProgress(counter);
});
Gleiche Frage hier: http: // Stackoverflow. com/questions/648379/how-can-i-bekommen-ein-Prozent-von-linq-zu-sql-submitchanges –