Tengo una relación recíproca de uno a muchos que tiene el valor predeterminado de vago verdadero. ¿Qué código puedo escribir contra NH API que recuperará de manera eficiente el árbol TOTAL COMO SI tuviera pereza = "falso" en el mapeo SubCategorías?Cargar con ansiedad la relación recursiva
Aquí está el recursiva relación uno-a-muchos:
<class name="Category" lazy="false">
...
<list name="SubCategories" fetch="subselect">
<key column="ParentCategoryID"/>
<index column="PositionInList"/>
<one-to-many class="Category"/>
</list>
no especifico lazy = "false" en la lista ya que la pereza se requiere en aproximadamente la mitad de las consultas que tenga que ejecutar. Tengo fetch = "subselect" en la lista como una optimización para cuando consigo recuperar todo el árbol.
He intentado la API ICriteria:
session.CreateCriteria<Category>().SetFetchMode("SubCategories", FetchMode.Eager).Add(Restrictions.IsNull("ParentCategory")).SetResultTransformer(CriteriaSpecification.DistinctRootEntity).List<Category>();
pero que sólo ansiosamente cargado sólo el primer nivel de la jerarquía.
Sí, es un artículo útil y ya lo he leído. Cuando estaba investigando la carga rápida de árboles hace varios meses, encontré relevante la sección "Anhelos y descendientes de carga ansiosa". Mi base de datos es SQL Compact, sin embargo, y no admite CTE (consultas jerárquicas). Entonces, escribir una sola consulta que resuelva el problema parece imposible. – HappyNomad