(N) Автоматическое присоединение к спящему режиму
-
09-06-2019 - |
Вопрос
Я разрабатываю веб-приложение с использованием NHibernate.Можете ли вы сказать мне, как написать запрос NHibernate для следующего SQL-запроса:
SELECT v1.Id
FROM VIEW v1
LEFT JOIN VIEW v2 ON v1.SourceView = v2.Id
ORDER BY v1.Position
По сути, это автоматическое объединение, но я не знаю, как написать это в Nhibernate.Допустим, имена свойств совпадают с именами столбцов таблицы.
Решение
Вы могли бы просто выполнить select для исходного объекта и установить связь между двумя объектами "lazy = false".Пока объекты сопоставлены, будут возвращены оба, и вы не получите исключение lazyloadingexception при попытке доступа к объекту.
Если вы не хотите сопоставлять "lazy = false", вы также можете выполнить итерацию по результатам и выполнить какую-либо операцию (например, спросить, равно ли оно null;if(v1.AssocatedObject == null){}), чтобы гарантировать загрузку данных во время открытого сеанса.
Обновить:
Я думаю, что на самом деле есть вариант получше, чем в NHibernateUtil.Initialise(), который может инициализировать коллекцию без необходимости блуждать по ней.