Entity Framework:- 转换派生时出错 class 在每个层次结构查询中 Table 抛出异常

Entity Framework:- Error when Casting to derive class throw exception in Table per hierarchy query

我尝试转换为派生时遇到异常 class;无法将类型“”转换为类型“”。 LINQ to Entities 仅支持转换 EDM 原语或枚举类型。

 (obj => ((DerivedClass)obj).DerivedProperty == true);

我最好的猜测是您正在尝试在执行 SQL 语句之前进行转换,而 LINQ to Entities 不知道如何将其转换为 SQL.

您的一个选择是在执行转换之前执行 SQL 查询,然后 LINQ to Objects 应该能够处理这个问题。警告:这可能会导致 N+1 问题。

可能有更聪明的解决方案,但没有更多代码,这是我最好的猜测。

您的问题很可能通过使用 IQueryable< TBase >.OfType< TDerived >() 方法开始您的查询得到解决,但是您应该 post 了解您正在做的事情的更多细节。

感谢大家的帮助; 我通过使用 as 运算符而不是直接转换解决了这个问题;我不知道原因,但这解决了我的问题。

obj => (obj as DerivedClass).DerivedProperty == true;