我将LINQ用于SQLTO将旧DBF文件导入MSSQL。我正在阅读所有行,并使用它们添加到数据库中 ctx.MyTable.InsertOnSubmit(row)

阅读阶段完成后,我有大约100 000个未决插入物。ctx.SubmitChanges() 自然需要很长时间。

有什么方法可以跟踪 ctx.submitchanges()?能 ctx.Log 以某种方式用于此目的?

更新: :可以使用 ctx.GetChangeSet().Inserts.Count 并使用日志跟踪插入语句?

分裂 ctx.SubmitChanges() 进入较小的块对我不起作用,因为我需要交易,全部或全无。

更新2:我找到了使用的不错的class actetextWriter,我将尝试计算插入。

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

更新3:

我已经构建了第一个代码原型,它没有优化。似乎正在工作:)

ctx.Log = new ActionTextWriter(s => {
 counter += s.Split(' ').Count(w => w.ToUpper() == "INSERT");
 ReportProgress(counter);
});
有帮助吗?

解决方案

我设法通过解析日志并使用ActionTextWriter获得了进度信息

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

ctx.Log = new ActionTextWriter(s => {
    if (s.StartsWith("INSERT INTO"))
        insertsCount++;
});
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top