LINQ to SQL SubmitChanges () progrès
-
14-10-2019 - |
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);
});
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++;
});