调用ObjectContext.SaveChanges()会使对象大小变小吗?

时间:2014-08-08 19:52:25

标签: c# entity-framework entity-framework-4

我有一个class级别的存储库,并在一些表格中插入行并填充其字段,我在for-loop中执行此操作,其中包含10K项。所以我还没有打电话给SaveChanges()。  我想在SaveChanges()结束时只调用for-loop一次,并立即保存所有内容。 但看起来在我的程序中间它正在耗尽内存和崩溃。我有16GB的RAM和资源监视器显示42%正在使用。 因此,如果我在循环中的每个项目的末尾而不是在整个循环结束时调用SaveChanges(),那么它是否会使其大小变小并帮助解决此内存问题?

2 个答案:

答案 0 :(得分:1)

1)不要在每次迭代结束时调用SaveChanges(),它太慢了 2)检查这个  When should I call SaveChanges() when creating 1000's of Entity Framework objects? (like during an import)
如果你可以使用SqlBulkCopy,那就非常快

同时检查您的应用是否定位到x86,如果是,则无法访问超过2GB(实际上小于此值)

答案 1 :(得分:0)

不,这不会节省内存。 我建议在每次迭代后调用SaveChanges(),将对象设置为null并为下一次迭代创建一个新对象,这样:

foreach(kitten)
{
  myRepo = new Repo();
  //....creating records
  myRepo.SaveChanges()
  myRepo = null;
}