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(); }
差不多。我也可以将数据记录列表存储在一个局部变量中,在提交更改后不断地重新实例化,但是,这需要更多的代码。
希望这是有意义的。谢谢!
可以在每个SubmitChanges
之后初始化一个新的DataContext
。我不确定对性能的影响,但我以前做过类似的事情,没有任何问题。
我看到的唯一其他解决方案是遍历您的更改并恢复它们。似乎前者更有效。
恐怕massive和linq-to-sql不能相提并论。它只是不适合批量处理。
如果你正在做的只是一个直接导入(你的例子表明),你使用SqlBulkCopy要好得多。速度快了几个数量级。还有更多的代码,但如果你在寻找速度,没有更好的解决方案。