Форум программистов, компьютерный форум, киберфорум
Наши страницы
LINQ
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
tesler
3 / 3 / 4
Регистрация: 08.04.2011
Сообщений: 201
1

null значения

23.07.2013, 16:00. Просмотров 1270. Ответов 2
Метки нет (Все метки)

что делать в таком случае: в linq запросе я сравниваю столбец со значением, причем столбец содержит null значения, и выдает ошибку из-за этого...почему он не может просто пропускать null-ы..
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2013, 16:00
Ответы с готовыми решениями:

Значения null присваиваются переменной, но не передаются в БД
Ребята, приветствую! Помогите, пожалуйста, я уже отчаялся. Я пишу диплом и работаю с клиентским...

EF: null-значения
Есть такое описание свойства: public class SomeUnit { public int?...

Обработка NULL значения
Доброго времени суток. Есть SQL запрос набранный в Access 2007 SELECT RESULT_ChipIN, ...

Проверка значения на null в БД
Добрый день. С помощью ODBC обращаюсь к СУБД MySQL. OdbcCom = new...

Возвращение значения null
как поступить в данном случае, при запросе WMI к классу WIN32_Processor посредством L2CacheSize...

2
spenar
29 / 29 / 2
Регистрация: 06.04.2012
Сообщений: 78
26.08.2013, 00:41 2
Цитата Сообщение от tesler Посмотреть сообщение
что делать в таком случае: в linq запросе я сравниваю столбец со значением, причем столбец содержит null значения, и выдает ошибку из-за этого...почему он не может просто пропускать null-ы..
Пиши свой comparer кастомный. Ну а лучше код в студию.
0
kolorotur
Эксперт .NET
12650 / 10031 / 2582
Регистрация: 17.09.2011
Сообщений: 17,036
Завершенные тесты: 1
27.08.2013, 12:34 3
Лучший ответ Сообщение было отмечено tesler как решение

Решение

В EF был баг при преобразовании Linq-запроса в SQL-запрос, а именно при сравнении значения с null: в SQL значения сравниваются оператором '=' (WHERE t.Name = 'Hello'), а значение с NULL сравнивается оператором IS (WHERE t.Name IS NULL).
Дефолтный трянслятор EF использовал простую логику: если в коде условие выглядит как myvar == null, то генерируется SQL-запрос с IS, если сравнение выглядит как myvar == anothervar, то генерируется запрос с "=".
Косяк всплывал тогда, когда anothervar равнялась null, в результате получался запрос вида "WHERE t.Name = NULL", на что СУБД агрилась.

Работает:
C#
1
2
3
var query = from e in entities
where e == null
select e;
Агрится:
C#
1
2
3
4
Entity value = null;
var query = from e in entities
where e == value
select e;
Костыль для обхода проблемы:
C#
1
2
3
4
Entity value = null;
var query = from e in entities
where (value == null ? e == null : e == value)
select e;
То же самое если e (столбец) равняется NULL.
Надо только местами условия поменять.

В .NET 4.5 вроде как этот баг пофиксили.
2
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2013, 12:34

Запись значения null в datagridview
есть таблица CREATE TABLE global_session_t( daily_id int IDENTITY(0,1) PRIMARY KEY NOT NULL,...

Вывести Null значения из БД в DropDownListFor
Здравствуйте такой вопрос, мне нужно вывести в DropdownListFor, которые хранятся в базе, но...

Объект имеет значения null
Здравствуйте проблема такова: панель для рисования zedGraphControl почему-то возвращает значение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.