在 EF Core 3.1 中执行更新 - 输出查询



在 EF Core 2 中,我能够使用FromSql和发出UPDATE-OUTPUT查询在单个查询中更新和检索实体。

它看起来像这样:

return await _baseDbContext.MyEntity
.FromSql($@"UPDATE {_baseDbContext.SchemaName}.MyEntity
SET STATUS = ""InProgress"",
UpdatedAt = SYSDATETIMEOFFSET()
OUTPUT
INSERTED.Id, INSERTED.Name,
INSERTED.Status, INSERTED.Deleted, INSERTED.CreatedAt, INSERTED.CreatedBy, INSERTED.CreatedByUserId,
INSERTED.UpdatedAt, INSERTED.UpdatedBy, INSERTED.UpdatedByUserId, INSERTED.Version
FROM { _baseDbContext.SchemaName}.MyEntity le
WHERE le.Status = ""Failed""")
.ToListAsync(cancellationToken);

现在升级到EF Core 3后,它抱怨

"FromSqlRaw 或 FromSqlInterpolated 是用不可组合的 SQL 和在其上编写的查询调用的。请考虑在 FromSqlRaw 或 FromSqlInterpolated 方法之后调用AsEnumerable,以便在客户端执行组合。

如果我只是输入SELECT查询,我就可以执行FromSqlRawFromSqlInterpolated

EF 核心 3 是否不再支持UPDATE-OUTPUT查询?

根据此处发布的答案添加.IgnoreQueryFilters()来解决它: 包含在 EF Core 3.1 中的 FromSqlRaw 和存储过程中

相关内容

  • 没有找到相关文章

最新更新