Сведения о вопросе

Killer

10:30, 29th August, 2020

Теги

sql   nhibernate   orm    

(N) Hibernate Автосоединение

Просмотров: 493   Ответов: 1

Я разрабатываю веб-приложение, используя NHibernate. Можете ли вы сказать мне, как написать запрос NHibernate для следующего запроса SQL:

SELECT v1.Id
FROM VIEW v1
LEFT JOIN VIEW v2 ON v1.SourceView = v2.Id
ORDER BY v1.Position

Это в основном автоматическое соединение, но я не знаю, как написать это в Nhibernate. Допустим, имена свойств совпадают с именами столбцов таблицы.



  Сведения об ответе

dump

08:36, 13th August, 2020

Вы можете просто выполнить выбор на исходном объекте и сделать ассоциацию между двумя объектами "lazy = false". Пока объекты сопоставляются, то оба будут возвращены, и вы не получите исключение lazyloadingexception при попытке доступа к объекту.

Если вы не хотите сопоставлять "lazy=false", вы также можете выполнить итерацию по результатам и выполнить какую-то операцию (например, спросить, является ли это null; if(v1.AssocatedObject == null) {}), чтобы обеспечить загрузку данных во время открытия сеанса.

Обновление:

Я думаю, что на самом деле есть лучший вариант, чем этот, NHibernateUtil.Initialise(), который может инициализировать коллекцию, не блуждая по ней.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться