Entity Framework преобразует запрос в значение null

#c# #entity-framework

#c# #entity-framework

Вопрос:

Когда я запускаю = null в Management Studio, он не возвращает строк, но когда я запускаю is null , я получаю данные обратно. В Entity Framework он преобразует запрос в is null, есть ли какая-либо альтернатива, чтобы я мог просто сделать = null в Entity Framework?

Это не возвращает строк

 SELECT *
FROM cart c
WHERE OrderId = NULL
  

Это возвращает 1000 строк

 SELECT *
FROM cart c
WHERE OrderId IS NULL
  

Количество строк в списке EF составляет 1000 строк

 var Pending = (from c in db.Cart 
               where sc.OrderId == null
               select sc.CartId).ToList();
  

Комментарии:

1. Смотрите learn.microsoft.com/en-us/sql/t-sql/statements /… для получения подробной информации о настройках Ansi Null в SQL

2. Используйте DBNull. Значение

3. могу ли я преобразовать int? в DBNull?

4. Ваш SQL не имеет смысла

5. Я думаю, что подход вашего запроса является еще одним спорным вопросом. Вот почему я просто напишу простой комментарий. Вы должны определить в своем int? Order_Id свойстве nullable Cart свойство, и вы можете использовать его с c.Order_Id==null или лучше выражением is !c.Order_Id.HasValue .

Ответ №1:

Null означает неизвестное значение. В SQL попытка приравнять любое значение к NULL приведет к FALSE, что имеет смысл. Таким образом, 2 = NULL равно FALSE. NULL = NULL равно FALSE. Однако значение столбца РАВНО NULL проверяет, что значение столбца равно NULL.

Семантика C # отличается и в конечном итоге преобразует ваш запрос в IS NULL, когда EF framework отправляет запрос на сервер.

Комментарии:

1. есть ли способ отправить запрос на сервер с помощью = NULL ? идентификатор является int?

2. Ну, в чем смысл? Результат заранее равен FALSE. Вы не получите строки. Может быть, вы могли бы объяснить, чего вы пытаетесь достичь, брат.