在Entity Framework中为相同的数据模型组合多次调用SaveChanges以提高性能

时间:2014-04-11 18:36:58

标签: c# entity-framework

我有一个实体数据模型,由这些多个实体组成 - 供应商,付款,供应商联系,发票和GLAccount。我正在使用EF版本4。

在一些现有代码中,有5种方法被一个接一个地调用,这些方法是为数据库中的上述实体表保存更改。方法如下所述。

  1. Method1更改内存中某个Vendor对象的数据,然后在对象上下文中 调用SaveChanges 方法。
  2. 方法2更改付款对象的数据, 调用SaveChanges
  3. Method3更改VendorContacts对象的数据, 调用SaveChanges
  4. Method4更改Invoices对象的数据, 调用SaveChanges
  5. Method5更改GLAccounts对象的数据, 调用SaveChanges
  6. 我的问题是:如果我只调用一次Vs调用SaveChanges方法五次会获得很多性能吗? 现在,Method1到Method5需要大约25秒才能完成

    所以我的建议是从所有方法中删除SaveChanges,并在Method5调用完成后调用SaveChanges。

1 个答案:

答案 0 :(得分:1)

我认为这里最好的答案是:尝试,对你的尝试进行基准测试,然后得出结论。听起来合乎逻辑的是,提交数据库而不是5提交可能会更快,但随后您处理更多数据。它可能也因您正在测试的环境而异。我说继续尝试,然后推动结果,这样我们都可以受益:)

修改

找到与您的问题相关的一些基准:When should I call SaveChanges() when creating 1000's of Entity Framework objects? (like during an import)