将Linq翻译成SQL更新......FROM Other_table WHERE

问题描述 投票:1回答:1

这是我对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();
sql-server .net-core entity-framework-core query-performance ef-core-2.2
1个回答
0
投票

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

你可以看看 EFCore.BulkExtensions 例如:

© www.soinside.com 2019 - 2024. All rights reserved.