我们在 VB.Net 中有多个项目,使用 .Net Framework 4 和 Linq to Entities 进行许多 SQL 查询。迁移到 EF 对我们来说是一个新的转变(使用它大约 4-6 个月),并且得到了高层管理人员的支持,因为我们可以更快地编码。我们仍然使用大量存储过程,但我们甚至也通过 Linq to Entities 执行这些存储过程。
我希望能够消除一些困惑,但我找不到有意义的直接答案。我们有一些查询,我们想要特定字段具有 NULL 值的记录。这些是简单的选择查询,没有聚合或左连接等。Microsoft 建议查询如下所示MSDN 链接 http://msdn.microsoft.com/en-us/library/bb738687.aspx:
dim query = from a in MyContext.MyTables
Where a.MyField = Nothing
Select a
我有几个项目就是这样做的,而且效果很好,IDE 中没有任何警告。最近,另一位开发人员创建了一个新项目,当他像上面那样进行 null 检查时,我们都在 IDE 中收到此警告:
警告 1 该表达式的计算结果始终为 Nothing(由于来自 equals 运算符的 null 传播)。要检查该值是否为空,请考虑使用“Is Nothing”。
比较项目,每个项目都启用了选项显式和选项严格。如果我们忽略警告,我们将在应用程序运行时获得我们正在寻找的确切记录集。如果我将 = 符号更改为 IS,警告就会消失。但为什么这个警告出现在一个项目中而不是其他项目中呢?即使在 MSDN 上也有使用等于运算符的示例,这令人困惑。
生成的列应该是Nullable(Of T)
因此,您可以检查该字段是否有价值,如下所示:
dim query = from a in MyContext.MyTables
Where Not a.MyField.HasValue
Select a
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)