2008-08-23 4 views
1

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

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

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

ответ

1

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

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

Update:

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

Смежные вопросы