(N) Hibernate Auto-Join

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

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

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

23.08.2008 18:31:02
1 ОТВЕТ
РЕШЕНИЕ

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

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

Обновить:

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

1
4.11.2008 21:42:03