У меня есть тип категории и тип элемента с двунаправленным отношением "многие ко многим". Обе стороны этих отношений ленивы. Я хочу написать запрос на HQL или ICriteria, который выполняет следующие действия: учитывая идентификатор категории, загружает все ее элементы вместе с (нетерпеливо загружает) коллекции категорий этих элементов. Как бы выглядел такой запрос?
Я дошел до:
session.CreateQuery( "from Category c left join fetch c.Items where c.ID = :cid" )
.SetParameter( "cid", ofCategory.ID )
.List();
Но я не могу понять, как вписаться в часть, которая охотно загружает коллекцию категорий каждого элемента.
Обратите внимание, что у меня уже есть работа с использованием NHibernateUtil.Initialize (). Однако ради образования я хочу попробовать другой способ - возможно, более элегантный. Так что в настоящее время он работает, сначала вызывая ISession.Lock () для связанных экземпляров Item и category, затем:
foreach ( Item i in ofCategory.Items ) {
if ( !NHibernateUtil.IsInitialized(i.Categories) )
NHibernateUtil.Initialize( i.Categories );
}