(N) Автоматическое присоединение к спящему режиму

StackOverflow https://stackoverflow.com/questions/24467

  •  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(), который может инициализировать коллекцию без необходимости блуждать по ней.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top