实体框架:- 强制转换以派生每个层次结构查询的表中的类引发异常时出错

本文关键字:查询 出错 异常 层次结构 框架 转换 派生 实体 | 更新日期: 2023-09-27 18:32:01

当我尝试投射到派生类时,我遇到了一个异常;无法将类型"强制转换为类型"。LINQ to 实体仅支持强制转换 EDM 基元或枚举类型。

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

实体框架:- 强制转换以派生每个层次结构查询的表中的类引发异常时出错

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

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

您的问题很可能通过使用 IQueryable来解决。OfType<开始查询的 TDerived=">() 方法,但您应该发布有关您正在执行的操作的更多详细信息。

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

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

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