С готовностью загрузить рекурсивное отношение
У меня есть рекурсивное отношение один ко многим, для которого по умолчанию используется значение lazy, равное true. Какой код я могу написать для API NH, который будет эффективно извлекать ВСЁ дерево, КАК ЕСЛИ у меня было lazy = & quot; false & quot; на отображение подкатегорий?
Вот рекурсивное отношение один ко многим:
<class name="Category" lazy="false">
...
<list name="SubCategories" fetch="subselect">
<key column="ParentCategoryID"/>
<index column="PositionInList"/>
<one-to-many class="Category"/>
</list>
Я не указываю lazy = & quot; false & quot; в списке, так как лень требуется примерно в половине запросов, которые мне нужно выполнить. У меня есть fetch = & quot; subselect & quot; в списке в качестве оптимизации, когда мне удается получить все дерево.
Я пробовал API-интерфейс ICriteria:
session.CreateCriteria<Category>().SetFetchMode( "SubCategories", FetchMode.Eager ).Add( Restrictions.IsNull("ParentCategory") ).SetResultTransformer( CriteriaSpecification.DistinctRootEntity ).List<Category>();
но это только нетерпеливо загружен только первый уровень в иерархии.