在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
来在客户端执行组合。
如果我只进行FromSqlRaw
查询,我就能执行FromSqlInterpolated
或SELECT
。
EF核心3是否不再支持UPDATE-OUTPUT
查询?
答案 0 :(得分:0)
通过在此处发布的答案添加.IgnoreQueryFilters()
来解决该问题:
Include with FromSqlRaw and stored procedure in EF Core 3.1