При использовании Linq DbNull эквивалентно Null? - PullRequest
6 голосов
/ 02 июня 2009

Это , а не о DBNull vs Null. Я понимаю разницу.

Что я хотел бы знать, если я использую Linq, скажем, для доступа к User.EmailAddress, а затем проверяю User.EmailAddress == null - это то же , что и User.EmailAddress == DBNull правильно?

Мое рассуждение состоит в том, что отсутствие данных в базе данных приводит к тому, что Linq не генерирует ссылку на объект, что означает, что при использовании с Linq значение null фактически эквивалентно DBNull.

Правильно ли мое рассуждение или нет?

Ответы [ 3 ]

12 голосов
/ 02 июня 2009

Вы не должны использовать DBNull с LinqToSql. Дело в языковой интеграции, и поэтому достаточно одного понятия или имени для null.

2 голосов
/ 08 марта 2012

Вот оператор выбора, который работает в LINQ to SQL для Visual Basic. Я предполагаю, что это будет то же самое в C #.

User.EmailAdress.Equals(Nothing)

Например:

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

Даст вам всех пользователей, которые не имеют ничего в адресе электронной почты. Чтобы проверить наличие записей с пробелами "", добавьте только

или

User.EmailAddress = ""
0 голосов
/ 02 июня 2009

В LINQ to SQL вы должны использовать null, а не DBNull. LINQ to SQL - это OR OR, поэтому он работает с объектами нативным образом. Вся цель L2S - позволить вам работать с объектами стандартным способом .NET, и позволить L2S обрабатывать все сопоставления между нативными и специфичными для вас БД. Вам следует избегать использования DBNull в любых операторах L2S ... на самом деле, я даже не уверен, что это даже правильная проверка (вероятно, это вызовет какое-то странное поведение, если оно вообще сработает).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...