使用Linq时,DbNull是否相当于Null?

时间:2009-06-01 20:09:53

标签: linq tsql null

这是关于DBNull vs Null的。我理解其中的差异。

我想知道的是,如果我使用Linq,比如说要访问User.EmailAddress,那么检查User.EmailAddress == null是相同,如User.EmailAddress == DBNull正确?

我的理由是数据库中缺少数据导致Linq没有生成对象引用,这意味着当与Linq一起使用时,null实际上等同于DBNull。

我的推理是否正确?

3 个答案:

答案 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 ......事实上,我甚至不确定它是否是一个有效的检查(如果它完全有效,它可能会导致一些奇怪的行为。)