tengo los siguientes override mapeo en un lado de la relación:Fetch.Join() no funciona en Fluido NHibernate
public void Override(AutoMapping<ItemAsmtDetailDh> mapping)
{
mapping.HasMany<WAsmtDetail>(x => x.WAsmtDetails).Inverse().AsBag().Cascade.AllDeleteOrphan().Access.PascalCaseField(Prefix.Underscore).Not.LazyLoad().Fetch.Join();
}
y en el otro lado de la relación que tengo:
public void Override(AutoMapping<WAsmtDetail> mapping)
{
mapping.References<ItemAsmtDetailDh>(x => x.ItemAsmtDetailDh).Not.Nullable().Not.LazyLoad().Fetch.Join();
}
Cuando uso la opción ShowSql veo que sigue emitiendo sentencias de selección separadas para WAsmtDetails que me da el temido problema "n + 1 selecciona". ¿Por qué se ignora ".Not.LazyLoad(). Fetch.Join()"?
Nota: Estoy usando la versión 1.1 Fluido NHibernate, no versión 2.1, debido a un error en la versión más reciente. (Consulte mi respuesta para this question para obtener detalles sobre el error). Estoy usando NHibernate versión 2.1.2.4000.
Gracias por la respuesta, cremor. En mi situación, uso CreateCriteria para recuperar una lista de objetos en el nivel de raíz agregado. La raíz agregada está 2 niveles por encima de la clase "ItemAsmtDetailDh" mencionada en mi pregunta. Luego borro el padre de ItemAsmtDetailDh (1 nivel arriba). NH está recuperando el resto del agregado desde ese punto hacia abajo para eliminarlo. Consideraría esto como un caso de recuperación por navegación de asociaciones. – MylesRip