我试图使用EF 4.3.1检索一组记录。我需要获取所有那些在某列中具有NULL值的记录。
我检查了数据库,并且该列中有很多行为空,该列也可以为空。 EF正在做一些奇怪的事情。查看分析器,它正在生成以下SQL:
SELECT
CAST(NULL AS int) AS [C1]
FROM ( SELECT 1 AS X ) AS [SingleRowTable1]
WHERE 1 = 0
我的实体列声明为“int?”
我尝试使用以下组合,但我得到了相同的结果:
dbset.Where(e=>e.MyNullableInt == null).ToList();
dbset.Where(e=>e.MyNullableInt.Equals(null)).ToList();
我可以传递这种奇怪行为的唯一方法是加载完整集,填充变量并执行此步骤之后的位置,这非常有用,因为它会加载所有数据。
任何想法如何实现这一目标?。
答案 0 :(得分:1)
试试这可能会帮助你......
dbset.Where(e=> (e.MyNullableInt ?? -1) == -1).ToList();
答案 1 :(得分:1)
检查你的映射,因为我在映射中看到了这种情况,你以某种方式使该字段成为必需。
或在您的数据库中该字段不可为空。