使用Linq时,DbNull相当于Null吗?
这不是关于 DBNull 与 Null 的问题。 我明白其中的区别。
我想知道的是,如果我使用 Linq,比如说访问 User.EmailAddress,那么检查 User.EmailAddress == null 与 User.EmailAddress == DBNull 是否相同正确?
我的推理是,数据库中缺少数据会导致 Linq 不生成对象引用,这意味着与 Linq 一起使用时 null 实际上相当于 DBNull。
我的推理正确还是错误?
This is not about DBNull vs Null. I understand the difference.
What I would like to know is if I am using Linq, say to access a User.EmailAddress, then checking User.EmailAddress == null is the same as User.EmailAddress == DBNull correct?
My reasoning is that the absence of data in the database results into Linq not generating an object reference, which then means that null is in fact equivalent to DBNull when used with Linq.
Is my reasoning correct or not?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您不应该将 DBNull 与 LinqToSql 一起使用。 重点是语言集成,因此
null
的一个概念或名称就足够了。You shouldn't use DBNull with LinqToSql. The point is Language Integration, and so one concept or name for
null
will suffice.下面是适用于 LINQ to SQL for Visual Basic 的 select 语句。 我认为 C# 中也是一样的。
例如:
将为您提供所有电子邮件地址中没有任何内容的用户。 要检查带有空格“”字符的条目,只需添加
或
Here's the select statement that works in LINQ to SQL for Visual Basic. I assume it will be the same in C#.
For example:
Will give you all the Users that have nothing in the email address. To check for entries with space " " characters only add
Or
在 LINQ to SQL 中,您应该使用 null 而不是 DBNull。 LINQ to SQL 是一个 OR 映射器,因此它以本机方式处理对象。 L2S 的总体目标是允许您以标准 .NET 方式处理对象,并让 L2S 处理本机与特定于您的数据库之间的所有映射。 您应该避免在任何 L2S 语句中使用 DBNull...事实上,我什至不确定这是否是一个有效的检查(如果它有效的话,它可能会导致一些奇怪的行为。)
In LINQ to SQL, you should be using null rather than DBNull. LINQ to SQL is an OR mapper, so it works with objects in a native way. The whole goal with L2S is to allow you to work with objects in a standard .NET way, and let L2S handle all the mapping between native and DB specific for you. You should avoid using DBNull in any L2S statements...in fact, I'm not even sure that is even a valid check (it'll probably cause some odd behavior if it works at all.)