Question

J'utilise LINQ pour les anciens fichiers DBF d'importation SQLto dans MSSQL. Je lis toutes les lignes et les ajouter à la base de données en utilisant ctx.MyTable.InsertOnSubmit(row)

Après la phase de lecture est terminée, j'ai environ 100 000 insertions en attente. ctx.SubmitChanges() est naturellement prend beaucoup de temps.

Est-il possible de suivre les progrès de la ctx.submitchanges()? Peut être utilisé ctx.Log en quelque sorte à cet effet?

Mise à jour : Est-il possible d'utiliser ctx.GetChangeSet().Inserts.Count et suivre insérer des instructions en utilisant le journal

En divisant ctx.SubmitChanges() en petits morceaux ne fonctionne pas pour moi, parce que je dois transaction, tout ou rien.

Mise à jour 2: J'ai trouvé classe agréable ActionTextWriter à l'aide que je vais essayer de compter les inserts.

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

Mise à jour 3:

Je AVONS construire un premier prototype de code, il est pas optimisé. Il semble fonctionner:)

ctx.Log = new ActionTextWriter(s => {
 counter += s.Split(' ').Count(w => w.ToUpper() == "INSERT");
 ReportProgress(counter);
});
Était-ce utile?

La solution

J'ai réussi à obtenir des informations de progression par analyse syntaxique journal et en utilisant ActionTextWriter

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++;
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top