首页 > 解决方案 > 最高效的 C# Entity Framework 数据库更新策略

问题描述

保存问题无法正常工作并寻找最有效的方法。

如果我在循环中执行此操作,它可以工作,但速度非常慢:

var entity = dbContext.customer.find(fubar.id);
dbContext.Entry(entity).CurrentValues.SetValues(fubar);

这是代码

var myCollection = dbContext.customer.where(...);

foreach (var fubar in myCollection.where(x => x.addressId == null))
{
   var existingRecord = dbContaxt.address.where(...);
   fubar.addressId = existingRecord.id;
   dbContext.table.Add(fubar);
}

dbContext.SaveChanges();

第一个问题,我的更改没有被保存,我不知道为什么。

第二个问题,有没有更有效的方法来做到这一点?集合中可以有数千条记录。

像 Parallel.ForEach() 这样的东西在这里合适吗?

谢谢,萨默

标签: c#.netentity-frameworkdbcontext

解决方案


每当您阅读实体时,将它们读取为 Queryable()

例如:var myCollection = dbContext.customer。AsQueryable() .where (...);

这样您就可以在不获取所有记录的情况下查询该表。但是,如果您不使用它,这将获取所有记录,然后对其应用 where 条件。

只需将其应用于具有更多记录数的查询即可查看差异。


推荐阅读