在EF Core 3.1中执行UPDATE-OUTPUT查询

时间:2020-05-20 01:01:39

标签: c# .net-core 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来在客户端执行组合。

如果我只进行FromSqlRaw查询,我就能执行FromSqlInterpolatedSELECT

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

1 个答案:

答案 0 :(得分:0)

通过在此处发布的答案添加.IgnoreQueryFilters()来解决该问题: Include with FromSqlRaw and stored procedure in EF Core 3.1