db InsertOnSubmit -如何清除收集

本文关键字:清除 InsertOnSubmit 何清除 db | 更新日期: 2023-09-27 18:06:50

我正在做一个大规模的导入,并且只做一个。submitchanges(),只有1000条记录。

的例子:

var targetRecord = new Data.User() { FirstName = sourceRecord.FirstName };
db.Users.InsertOnSubmit(record);
对于来自源数据库的每条记录,上面的代码都在一个循环中。然后,后来…

if (i % 1000 == 0) { db.SubmitChanges(); }

问题是,要插入的项的集合越来越大,当我想在每次SubmitChanges();

之后清除它们时

我在找什么:

if (i % 1000 == 0) { db.SubmitChanges(); db.Dispose_InsertOnSubmit_Records(); }

差不多。我也可以将数据记录列表存储在一个局部变量中,在提交更改后不断地重新实例化,但是,这需要更多的代码。

希望这是有意义的。谢谢!

db InsertOnSubmit -如何清除收集

可以在每个SubmitChanges之后初始化一个新的DataContext。我不确定对性能的影响,但我以前做过类似的事情,没有任何问题。

我看到的唯一其他解决方案是遍历您的更改并恢复它们。似乎前者更有效。

恐怕massive和linq-to-sql不能相提并论。它只是不适合批量处理。

如果你正在做的只是一个直接导入(你的例子表明),你使用SqlBulkCopy要好得多。速度快了几个数量级。还有更多的代码,但如果你在寻找速度,没有更好的解决方案。