|
0 / 0 / 0
Регистрация: 08.09.2012
Сообщений: 6
|
||||||||||||||||
.NET 4.x Фильтрация Where не работает корректно, если передаваемый в метод аргумент parentId равен null08.09.2012, 07:53. Показов 1592. Ответов 10
Метки нет (Все метки)
Никак не могу понять, почему фильтрация Where не работает корректно, если передаваемый в метод аргумент parentId равен null.
Вызываю метод:
Фильтрация не выполняется корректно. Методом возвращается пустая коллекция. Хотя в коллекции Data.Nodes точно есть элементы, у которых ParentId == null. Однако, если написать код метода так:
Объясните пожалуйста почему так? Какие есть пути решения моей проблемы, или второй вариант кода метода является единственно правильным решением?
0
|
||||||||||||||||
| 08.09.2012, 07:53 | |
|
Ответы с готовыми решениями:
10
Аргумент, передаваемый в нить, привести к типу Создать представление Index для таблицы (id | name | parentId), а вместо parentId отобразить name Метод получает другой метод, как аргумент. Как это работает? |
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|||||||||||
| 08.09.2012, 12:55 | |||||||||||
|
Проблема не в лямбдах, а в трансляции nullable-типов в SQL в EntityFramework, который вы используете, судя по IQueryable<Node>.
В первом случае генерируется что-то вроде этого:
Если же null прописать явно, как во втором случае, то сгенерируется правильный SQL-запрос:
Решение: либо обновиться до свежей версии EF (легко устанавливается через NuGet), либо использовать второй вариант.
1
|
|||||||||||
|
0 / 0 / 0
Регистрация: 08.09.2012
Сообщений: 6
|
|
| 08.09.2012, 15:29 [ТС] | |
|
Огромное спасибо за ответ.
Но где найти EntityFramework 4.5? https://nuget.org/packages/EntityFramework На данной странице присутствует только 4.3.1 и 5.0.0 Обновился командой Update-Package EntityFramework до 5.0.0. Но фильтрация корректно не заработала. Я так думаю, что нужно пересоздать модель (*.edmx) мастером новой версии (5.0.0). Но где достать шаблон мастера для 5.0.0? В меню добавить -> создать элемент -> данные есть только "Модель ADO.NET EDM". Но я подозреваю, что это мастер модели EDM старой версии. И никаких других шаблонов не появилось. А вроде должен появится шаблон под названием "ado.net entity data model". Но NuGet похоже добавил в проект только ссылку на свежую версию EntityFramework.dll, а предоставить мне обновленные шаблоны забыл
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|||
| 08.09.2012, 15:41 | |||
|
1
|
|||
|
0 / 0 / 0
Регистрация: 08.09.2012
Сообщений: 6
|
||
| 08.09.2012, 15:57 [ТС] | ||
|
Что-то совсем ничего не понимаю. А где же мастер? Или в работе с EF 5 все нужно делать вручную? Вообщем какие следующие шаги после создания этих двух файлов не привязанных никак к БД? Вижу что просит заменить смещение на название *.edmx файла. Но что это значит? Он его создаст или он уже должен быть чем-то создан? Пока кроме исключений ничего получить не смог
0
|
||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|
| 08.09.2012, 16:27 | |
|
В 2010 студии пара дополнительных махинаций требуется.
Откройте в дизайнере edmx файл, который вы сгенерировали для предыдущей версии, кликните правой кнопкой в любом месте и выберите пункт Add Code Generation Item (не знаю как в русской версии). Откроется то же окошко с выбором шаблона - повторите те же шаги, что в предыдущем посте (Online Templates -> Database -> EF 5.x DbContext Generator for C#). После этого все нормуль сгенерируется.
1
|
|
|
0 / 0 / 0
Регистрация: 08.09.2012
Сообщений: 6
|
||
| 08.09.2012, 16:40 [ТС] | ||
|
0
|
||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|
| 08.09.2012, 16:52 | |
|
Пятая версия уже под новую 2012-ю студию лепится - там да, просто создается новый файл и уже имеется готовый шаблон для EF 5.x.
В 2010-й приходится окольными путями - вряд ли кто-то будет под старую версию IDE шаблон для новой технологии пилить. Хотя, может и есть что-то - я особо плотно не интересовался.
1
|
|
|
0 / 0 / 0
Регистрация: 08.09.2012
Сообщений: 6
|
|
| 08.09.2012, 16:52 [ТС] | |
|
Вообщем сделал, используя edmx-файл, сгенерированный старой версией мастера модели EDM, и вернулся к результату, который и был ранее. В первом варианте метода фильтрация работает не корректно, а во втором работает как и раньше - корректно
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 08.09.2012, 17:14 | ||
|
Значит фикс еще не выпустили в релиз
![]() Вот страничка с багрепортом: http://data.uservoice.com/foru... on-1015361
1
|
||
|
0 / 0 / 0
Регистрация: 08.09.2012
Сообщений: 6
|
|
| 08.09.2012, 18:10 [ТС] | |
|
Ясненько. Ну ладно. Цель была понять, что не так, может я чего не понимаю... Благодаря Вам я получил ответ на свой вопрос.
Спасибо!
0
|
|
| 08.09.2012, 18:10 | |
|
Помогаю со студенческими работами здесь
11
Каким образом выполняется оператор "+" для ссылочных типов, если один из операндов равен null Не корректно работает функция ЕСЛИ
Метод, возвращающий true, если в массиве каждый элемент больше или равен предыдущему
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|