Я разрабатываю веб-приложение с помощью NHibernate. Не могли бы вы рассказать мне, как написать NHibernate Query для следующего SQL-запроса:
SELECT v1.Id
FROM VIEW v1
LEFT JOIN VIEW v2 ON v1.SourceView = v2.Id
ORDER BY v1.Position
По сути, это автоматическое присоединение, но я не знаю, как это написать в Nhibernate. Допустим, имена свойств совпадают с именами столбцов таблицы.


Вы можете просто выбрать исходный объект и установить связь между двумя объектами «lazy = false». Пока сущности отображаются, оба будут возвращены, и вы не получите исключение lazyloadingexception при попытке доступа к объекту.
Если вы не хотите отображать «lazy = false», вы также можете перебирать результаты и выполнять какую-либо операцию (например, спрашивать, имеет ли он значение null; if (v1.AssocatedObject == null) {}), чтобы гарантировать данные загружаются, пока сеанс открыт.
Обновлять:
Я думаю, что на самом деле есть лучший вариант, чем NHibernateUtil.Initialise (), который может инициализировать коллекцию без необходимости блуждать по ней.