使用“IS NULL”的地方

时间:2013-04-29 20:53:35

标签: entity-framework entity-framework-4 entity-framework-4.1

我试图使用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();

我可以传递这种奇怪行为的唯一方法是加载完整集,填充变量并执行此步骤之后的位置,这非常有用,因为它会加载所有数据。

任何想法如何实现这一目标?。

2 个答案:

答案 0 :(得分:1)

试试这可能会帮助你......

dbset.Where(e=> (e.MyNullableInt ?? -1) == -1).ToList();

答案 1 :(得分:1)

检查你的映射,因为我在映射中看到了这种情况,你以某种方式使该字段成为必需。

或在您的数据库中该字段不可为空。