0

我正在尝试使用 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();

我可以通过这种奇怪行为的唯一方法是加载完整集,填充变量并在此步骤之后执行 where,这是非常无效的,因为它加载了所有数据。

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

4

2 回答 2

1

试试这个可能对你有帮助...

dbset.Where(e=> (e.MyNullableInt ?? -1) == -1).ToList();
于 2013-05-07T04:21:27.763 回答
1

检查您的映射,因为我在映射时看到了这种情况,您以某种方式将该字段设为必填。

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

于 2015-07-04T13:27:54.207 回答