【发布时间】:2021-06-10 17:23:48
【问题描述】:
我正在尝试更新从数据库中检索到的 IQueryable 中的所有行。
这是执行此操作的正确方法吗?当我对此运行 Xunit 测试时,行似乎消失了。
foreach (var item in productCustomer) // productCustomer is IQueryable
{
item.isActiveStatus = (item.ExpirationYear < 2019);
}
_dbContext.SaveChanges();
当前使用的是 EF Core 3.1
注意:尽量避免创建全新的对象或重新映射所有内容;只想更新 20 个成员中的 1 个成员。
【问题讨论】:
-
之前查询的逻辑是什么?
-
那么你可能有一个全局查询过滤器。也就是说,几乎没有什么信息可以说明这一点。
-
这种更新方法效率很低(但是,整个 EF 也是如此)。它将生成一个 SELECT 查询和许多 UPDATE 查询。虽然您可以使用单个 UPDATE 查询。
标签: c# .net entity-framework .net-core