【发布时间】:2023-01-01 00:35:37
【问题描述】:
UPDATE [Revision]
SET [Value] = [Value] + 1
WHERE [Type] = 0
AND [Number] IN (SELECT [Number] FROM [User]
WHERE Id IN (5111, 5211, 5311))
如何在 EF Core 中编写此查询?
我试过:
var n = await db.Users
.AsNoTracking()
.Where(x => id.Contains(x.Id))
.Select(y => y.Number)
.ToListAsync(s.Token)
.ConfigureAwait(false);
await db.Revisions
.AsNoTracking()
.Where(y => y.Type == Consts.TABLE_USER && n.Contains(y.Number))
.ExecuteUpdateAsync(z =>
z.SetProperty(o => o.Value, o => o.Value + 1),
s.Token
).ConfigureAwait(false);
但作为两次往返,它的性能并不好。
我只想编写 EF Core 一次往返以获得高性能。
【问题讨论】:
-
只需首先删除
ToListAsync,无论如何,如果显示模型类,查询可以重写。
标签: sql-server entity-framework-core ef-core-7.0