C# db InsertOnSubmit-如何清除集合

C# db InsertOnSubmit-如何清除集合,c#,linq-to-sql,C#,Linq To Sql,我正在进行大规模导入,并且只进行了.SubmitChanges()操作,只导入了1000条记录 例如: var targetRecord = new Data.User() { FirstName = sourceRecord.FirstName }; db.Users.InsertOnSubmit(record); 对于源数据库中的每条记录,上面的代码都在一个循环中。然后,以后 if (i % 1000 == 0) { db.SubmitChanges(); } 问题是,当我想在每次提交更

我正在进行大规模导入,并且只进行了.SubmitChanges()操作,只导入了1000条记录

例如:

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

if (i % 1000 == 0) { db.SubmitChanges(); }
问题是,当我想在每次提交更改后清除它们时,要插入的项集合会越来越大()

我要找的是:

if (i % 1000 == 0) { db.SubmitChanges(); db.Dispose_InsertOnSubmit_Records(); }
差不多吧。我也可以将数据记录列表存储在一个局部变量中,在提交更改后,我会不断地重新实例化这些数据记录,但这更多的是代码


希望这是有道理的。谢谢

您可以在每次
提交更改后初始化新的
DataContext
。我不确定性能的影响,但我在过去做过类似的事情,没有任何问题


我见过的唯一其他解决方案是迭代更改并恢复它们。前者似乎是一种更有效的方法。

好吧,恐怕massive和linq-to-sql不能同时使用。它只是不适合批量处理

如果您所做的只是直接导入(您的示例表明这一点),那么使用SqlBulkCopy会更好。这是更快的数量级。还有更多的代码,但如果你在寻找速度,没有更好的解决方案