#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
свойстве nullableCart
свойство, и вы можете использовать его с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. Вы не получите строки. Может быть, вы могли бы объяснить, чего вы пытаетесь достичь, брат.