4 Stimmen

LINQ to SQL Fortschritt SubmitChangess()

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/

0voto

Emir Punkte 1586

Ich habe es geschafft, Fortschrittsinformationen zu erhalten, indem ich das Protokoll analysierte und ActionTextWriter verwendete

http://damieng.com/blog/2008/07/30/linq-to-sql-log-to-debug-window-file-memory-or-multiple-writers

ctx.Log = new ActionTextWriter(s => {
    if (s.StartsWith("INSERT INTO"))
        insertsCount++;
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X