这是不有关的DBNull VS空。我明白不同之处。使用Linq时,DbNull是否等于空?
我想知道的是,如果我使用LINQ,说访问User.EmailAddress,然后检查User.EmailAddress == NULL是相同作为User.EmailAddress == DBNull的正确吗?
我的理由是,由于没有在数据库中的结果数据的进入的LINQ不产生对象的引用,其然后意味着与LINQ的使用时null是实际上等同于为DBNull。
是我的推理正确与否?
这是不有关的DBNull VS空。我明白不同之处。使用Linq时,DbNull是否等于空?
我想知道的是,如果我使用LINQ,说访问User.EmailAddress,然后检查User.EmailAddress == NULL是相同作为User.EmailAddress == DBNull的正确吗?
我的理由是,由于没有在数据库中的结果数据的进入的LINQ不产生对象的引用,其然后意味着与LINQ的使用时null是实际上等同于为DBNull。
是我的推理正确与否?
你不应该LinqToSql使用的DBNull。关键是语言集成,因此null
的一个概念或名称就足够了。
在LINQ to SQL,你应该使用空,而不是DBNull的。 LINQ to SQL是一个OR映射器,因此它以本地方式处理对象。 L2S的全部目标是允许您使用标准.NET方式处理对象,并让L2S处理本机和特定于您的数据库之间的所有映射。应避免在任何L2S语句中使用的DBNull ......其实,我甚至相信,即使是一个有效的检查(这可能会导致一些奇怪的行为,如果它工作在所有。)
这也回答了我一直在思考的问题,但没有问:L2S有什么意义?在我看来(仍然),仅仅调用SQL非常简单,学习不同的语法是很愚蠢的。但至少现在我明白了它的理论原因.... – RolandTumble 2009-06-01 22:51:00
这里的选择语句适用于Visual Basic的LINQ to SQL。我认为它将在C#中是相同的。
User.EmailAdress.Equals(Nothing)
例如:
Dim EmptyEmailAddressEntries = From User in DC.Users _
Where User.EmailAddress.Equals(Nothing) select User
会给你一个什么都没有的电子邮件地址的所有用户。要检查与空间“”项角色只加
或者
User.EmailAddress = ""
我不这么认为。根据你的发现,如果null与DBNull相同? – shahkalpesh 2009-06-01 20:12:58