【发布时间】:2020-07-19 02:36:16
【问题描述】:
我正在从 EF Core 2.2 迁移到 3.1。 One breaking change (#15392) 是它不再由存储过程组成,因此您必须添加“AsEnumerable”。这通常有效,但我在 TPH 表上有一个存储过程调用,但失败了:
-
我对 SPROC 的调用是:
SqlParameter authorizedUserID_p = new SqlParameter("@authorizedUserID", authorizedUser.ID); IEnumerable<Post> query = context.Posts.FromSqlRaw<Post>("Post.USP_ReadPost @ID, @AuthorizedUserID", parameters: new[]{ parentID_p, authorizedUserID_p } ).AsEnumerable<Post>(); Post targetPost = query.ToList<Post>().FirstOrDefault<Post>(); -
它会产生这个错误,建议使用 AsEnumberable(我已经在上面使用):
System.InvalidOperationException:FromSqlRaw 或 FromSqlInterpolated 是使用不可组合的 SQL 调用的,并且查询在其上进行组合。 考虑在 FromSqlRaw 或 FromSqlInterpolated 方法之后调用
AsEnumerable在客户端执行合成。 我相信原因是因为我的 Posts 表是 Table-per-hiearchy,因为在同一应用程序中对 SPROCS 的其他调用工作正常。将不胜感激任何可能的帮助!
【问题讨论】:
标签: entity-framework-core table-per-hierarchy