LINQ to SQLを使用して、古いDBFファイルをMSSQLにインポートしています。私はすべての行を読み取り、それらを使用してデータベースに追加していますctx.MyTable.InsertOnSubmit(row)
読み取りフェーズが完了した後、約100000の保留中の挿入があります。
ctx.SubmitChanges()当然、時間がかかります。
進捗状況を追跡する方法はありますctx.submitchanges()か?ctx.Logどういうわけかこの目的に使用できますか?
更新:ctx.GetChangeSet().Inserts.Countログを使用して挿入ステートメントを使用および追跡することは可能ですか?
ctx.SubmitChanges()トランザクションが必要なため、すべてまたは何も必要ないため、小さなチャンクに分割することはできません。
更新2: 挿入をカウントしようとする素晴らしいクラスActionTextWriterを見つけました。
http://damieng.com/blog/2008/07/30/linq-to-sql-log-to-debug-window-file-memory-or-multiple-writers
アップデート3:
私は最初のコードプロトタイプを作成しましたが、最適化されていません。動作しているようです:)
ctx.Log = new ActionTextWriter(s => {
counter += s.Split(' ').Count(w => w.ToUpper() == "INSERT");
ReportProgress(counter);
});