【问题标题】:Translating Linq to SQL Update ... FROM Other_table WHERE将 Linq 转换为 SQL 更新 ... FROM Other_table WHERE
【发布时间】:2020-09-30 22:24:15
【问题描述】:

EF Core 翻译有我预期的结果

UPDATE Table1
SET field1 = t2.field1,
    field2 = t2.field2
FROM Table2 as t2
WHERE t1.Id1 != t2.Id2 AND
      t1.Id2 = t2.Id2 AND
      t2.SomeField > 0

但在 SQL 探查器中,我可以看到 1 个查询我尝试更新的 每条 记录。

这是我的代码。

var uploads = uow.Repository<Table2>().List(spec);

var errors = uow.Repository<Table1>().Get();
foreach (var upload in uploads)
{
    var toUpdate = errors.Where(x =>
                    x.Id1 != upload.Id2 &&
                    x.Id2 == upload.Id2);
    foreach (var error in toUpdate)
    {
        error.IsResolved = true;
    }
}

uow.SaveChanges();

【问题讨论】:

  • 我不记得具体的操作方法了,但是有一种方法可以在执行SaveChanges 之前查看生成的SQL。

标签: sql-server .net-core entity-framework-core query-performance ef-core-2.2


【解决方案1】:

您想要的称为“批量更新”,这不是 Entity Framework 的默认行为,但有几个 NuGet 包可以正确处理它。

例如,您可以查看EFCore.BulkExtensions

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    • 2015-04-17
    相关资源
    最近更新 更多