nhibernate QueryOver не генерирует исключение при отсутствии сопоставления

#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. Создайте критерий (тип). Список ();