我重载了实体类型的!=和==运算符。现在,当我跑:
dbContext.MyEntityDbSet.Where(x => x.MyProperty != null)
我得到一个例外
无法比较类型' MyEntityType'的元素。只有原始类型, 支持枚举类型和实体类型。
我该如何绕过它?
谢谢
答案 0 :(得分:1)
EF不知道==和!=是否超载。您还可以比较基元类型。此外,您无法比较相同类型的2个实体(它可以比较它们比较像hibernate那样的主要键)。所以你需要在LINQ查询中复制==和!=(或实现 - 即插入ToList() - 在Where之前的查询,但这是一个非常糟糕的解决方案。)
答案 1 :(得分:-1)
执行此操作的最佳方法可能是将参数转换为通用而不会过载:
dbContext.MyEntityDbSet.Where(x => (object)x != null);