#nhibernate #queryover
#nhibernate #выполнение запроса
Вопрос:
Кто-нибудь может объяснить, в чем идея NHibernate QueryOver не генерировать исключение, когда для используемого класса нет сопоставления? Допустим, у меня есть класс FakeClass и отображение не определено, приведенный ниже код выполняется без исключения.
var result = session.QueryOver<FakeClass>()
.Where(x => x.Name == "SomeName").List();
Комментарии:
1. Разве модульное тестирование не помогло бы вам здесь. Я понимаю, что это не тот ответ, который вы ищете, но модульный тест подхватил бы это.
2. дело в том, что это была ошибка, которую было трудно найти, на самом деле в течение двух недель я разрабатывал проект, одна часть которого работала случайно. модульное тестирование может быть правильным способом обнаружения такого рода ошибок, но я думаю, что такой тест больше не будет называться unit — просто автоматическим (на мой взгляд). Файл сопоставления существовал в другой сборке и не был должным образом подключен к конфигурации гибернации. Плохое поведение предполагает, что мы создали ошибку в коде или конфигурации, а также не использовали Get, который выдает исключение. так что дело не так просто.
3. также я дезориентирован, потому что, если это ошибка в nhibernate, это действительно очень странно, что она не была найдена и исправлена до сих пор, но если это не так, я не вижу никаких преимуществ этой «функции».
Ответ №1:
ну, это ошибка, о которой сообщалось: https://nhibernate.jira.com/browse/NH-2829
надеюсь, это не закончится так: https://nhibernate.jira.com/browse/NH-2183
Комментарии:
1. Это все еще не исправлено. Действительно, очень досадная ошибка.
2. aaи все еще не исправлено по состоянию на 2017 год и NH5.0.0
Ответ №2:
Существует ли FakeClass в виде таблицы в базе данных? Если это так, я бы подумал, что функция автоматического сопоставления Fluent будет отображаться на нее так, как задумано.
Комментарии:
1. нет, таблицы поддельных классов нет.. в моем тестовом домене более 15 тыс. типов, и только 477 генерируют исключение при использовании в expression: session. Создайте критерий (тип). Список ();