以下查询在 EF core 2 上运行良好,但在 EF core 3 上会抛出错误!
我什至可以在 EF core 2 中的此查询之后添加一些包含,现在我已经放弃了。
query:
// just to have an Id
var id = Guid.NewGuid();
var resutl = Context.Parties.FromSqlInterpolated($@"WITH mainOffice AS
(SELECT * FROM Parties as o1 WHERE (Discriminator = N'Office')
AND (Id = '{id}')
UNION ALL SELECT o.* FROM Parties AS o INNER JOIN mainOffice AS m
ON m.Id = o.ParentOfficeId)
SELECT * FROM mainOffice as f").ToList();
其产生的错误如下:
使用不可组合 SQL 调用 FromSqlRaw 或 FromSqlInterpolated
并在其上编写查询。考虑打电话AsEnumerable
在 FromSqlRaw 或 FromSqlInterpolated 方法执行之后
客户端的组成。
了解以下信息可能会有所帮助:
- 表“Parties”是每个层次结构的一个表
- 我尝试从根类型 DbSet 和我感兴趣的类型运行查询
- FromSqlRaw 和 FromSqlInterpolated 均未成功
- 添加“AsEnumerable”也没有帮助
我是不是忘记了什么?我究竟做错了什么?
“不可组合 SQL”是什么意思?这是否意味着 EF core 正在尝试解释查询?
我没有答案,但我现在知道原因了。
生成此错误的原因与此问题类似:FromSql 方法与存储过程一起使用时无法组合 https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-3.0/breaking-changes#fromsql-method-when-used-with-stored-procedure-cannot-be-composed
在我的情况下,无论天气如何,我都会使用任何方法,因为我尝试查询的表包含某种不同的类型(每个层次结构的表),我的查询将始终在选择查询内扭曲以限制鉴别器。即使我从根编写查询,包装器选择查询也会使用所有可能的鉴别器生成。
所以这意味着我只能运行可以作为子查询放置的查询。我的查询不能,存储过程不能...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)