将对实体框架中同一数据模型的SaveChanges的多个调用组合起来以提高性能

本文关键字:组合 调用 起来 高性能 SaveChanges 框架 实体 数据模型 | 更新日期: 2023-09-27 17:57:53

我有一个实体数据模型,它由供应商、付款、供应商联系人、发票和GLAccount这多个实体组成。我使用的是EF版本4。

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

  1. Method1更改内存中某个Vendor对象的数据,然后在对象上下文上调用SaveChanges方法
  2. 方法2更改Payments对象的数据,调用SaveChanges
  3. 方法3更改VendorContacts对象的数据,调用SaveChanges
  4. 方法4更改Invoices对象的数据,调用SaveChanges
  5. 方法5更改GLAccounts对象的数据,调用SaveChanges

我的问题是:如果我只调用SaveChanges方法一次,而不是调用它五次,我的性能会有很大提高吗现在,方法1到方法5大约需要25秒才能完成

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

将对实体框架中同一数据模型的SaveChanges的多个调用组合起来以提高性能

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

编辑

发现了一些与您的问题相关的基准测试:当创建1000';实体框架对象的数量?(就像在导入过程中一样)