这是关于DBNull vs Null的不。我理解其中的差异。
我想知道的是,如果我使用Linq,比如说要访问User.EmailAddress,那么检查User.EmailAddress == null是相同,如User.EmailAddress == DBNull正确?
我的理由是数据库中缺少数据导致Linq没有生成对象引用,这意味着当与Linq一起使用时,null实际上等同于DBNull。
我的推理是否正确?
答案 0 :(得分:12)
您不应该将DBNull与LinqToSql一起使用。重点是语言集成,因此null
的一个概念或名称就足够了。
答案 1 :(得分:2)
这是在LINQ to SQL for Visual Basic中使用的select语句。我认为它在C#中是一样的。
User.EmailAdress.Equals(Nothing)
例如:
Dim EmptyEmailAddressEntries = From User in DC.Users _
Where User.EmailAddress.Equals(Nothing) select User
将为您提供电子邮件地址中没有任何内容的所有用户。要检查带有空格“”字符的条目,只需添加
或
User.EmailAddress = ""
答案 2 :(得分:0)
在LINQ to SQL中,您应该使用null而不是DBNull。 LINQ to SQL是一个OR映射器,因此它以本机方式处理对象。 L2S的整个目标是允许您以标准.NET方式处理对象,并让L2S为您处理本机和数据库之间的所有映射。你应该避免在任何L2S语句中使用DBNull ......事实上,我甚至不确定它是否是一个有效的检查(如果它完全有效,它可能会导致一些奇怪的行为。)