使用Linq时,DbNull相当于Null吗?

发布于 2024-07-23 11:30:41 字数 281 浏览 2 评论 0原文

这不是关于 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

抚笙 2024-07-30 11:30:41

您不应该将 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.

装纯掩盖桑 2024-07-30 11:30:41

下面是适用于 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 = ""

Here's the select statement that works in LINQ to SQL for Visual Basic. I assume it will be the same in C#.

User.EmailAdress.Equals(Nothing)

For example:

Dim EmptyEmailAddressEntries = From User in DC.Users _
    Where User.EmailAddress.Equals(Nothing) select User

Will give you all the Users that have nothing in the email address. To check for entries with space " " characters only add

Or

User.EmailAddress = ""
豆芽 2024-07-30 11:30:41

在 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.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文