Tengo un gráfico de objetos bastante profundo (5-6 nodos), y mientras recorro partes de él NHProf me dice que tengo un problema de "Seleccione N + 1" (que hacer).Prevenir fluidez NHibernate seleccionar n + 1
Las dos soluciones yo sepa son
- Eager hijos de carga
- resquebrajarse mi gráfico de objetos (y la carga ansiosa)
Realmente no quiero hacer, ya sea de estos (aunque puedo dividir el gráfico más tarde, ya que lo veo crecer)
Por ahora ....
¿Es posible decirle a NHibernate (con FluentNHibernate) que cada vez que intento acceder a los niños, los cargo de una vez, en lugar de seleccionar -n + 1-ing mientras los recorro?
También recibo "conjuntos de resultados ilimitados", que es probablemente el mismo problema (o más bien, se solucionará con la solución anterior si es posible).
Cada colección de elementos secundarios (en todo el gráfico) solo tendrá alrededor de 20 miembros, pero 20^5 es mucho, por lo que no quiero cargar todo con entusiasmo cuando obtengo la raíz, simplemente obtengo todos colección de niños cada vez que me acerco a ella.
Edición: una idea de último momento .... ¿Qué pasa si quiero introducir la paginación cuando quiero renderizar niños? ¿TENGO que romper mi gráfico de objeto aquí, o hay algún adelanto que pueda emplear para resolver todos estos problemas?
"Me parece que desea seguir el enfoque de usar su modelo de dominio en lugar de crear una consulta nhibernate específica para manejar este escenario". Definitivamente. lo último que quiero es consultas específicas. Comprobaré esas cosas, ta –
nota -> la interfaz fluent-nh ahora admite el atributo BatchSize() – KevinT