首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >db InsertOnSubmit -如何清除收集

db InsertOnSubmit -如何清除收集
EN

Stack Overflow用户
提问于 2011-08-26 23:53:11
回答 2查看 587关注 0票数 2

我正在做大量的导入,并且只做了一个.SubmitChanges(),只有1,000条记录。

示例:

代码语言:javascript
复制
var targetRecord = new Data.User() { FirstName = sourceRecord.FirstName };
db.Users.InsertOnSubmit(record);

对于源数据库中的每条记录,上述操作都是在一个循环中进行的。然后,后来..。

代码语言:javascript
复制
if (i % 1000 == 0) { db.SubmitChanges(); }

问题是,当我想在每个SubmitChanges()之后清除它们时,要插入的项的集合会变得越来越大;

我要找的是:

代码语言:javascript
复制
if (i % 1000 == 0) { db.SubmitChanges(); db.Dispose_InsertOnSubmit_Records(); }

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-26 23:58:43

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

我所见过的唯一另一个解决方案是遍历您的更改并还原它们。前者似乎是一种更有效的方法。

票数 1
EN

Stack Overflow用户

发布于 2011-08-28 03:23:09

嗯,我担心massive和linq-to-sql不能一起使用。它不是为批处理而设计的。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7207388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档