Tengo un objeto principal con una colección secundaria que contiene un elemento, la colección secundaria contiene una colección "nieto" que contiene 3 elementos.NHibernate ThenFetchMany está recuperando hijos duplicados
Estoy cargando el objeto principal de la base de datos utilizando NHibernate de la siguiente manera
Parent parentObject = session.Query<Parent>()
.FetchMany(x => x.Children)
.ThenFetchMany(x => x.GrandChildren)
.Where(x => x.Id = "someparentid")
.Single();
Lo que estoy encontrando es que hay niños duplicar objetos (3 en total) unido al objeto padre cuando no debería haber solo uno. (Hay 3 objetos de nieto correctamente conectados a cada niño.) La carga de la colección de niños solo funciona correctamente.
¿Sabes cómo puedo lograr cargar el objeto principal completo sin duplicar hijos?
@ J0K - Gracias por editar, no han tenido café de la mañana todavía me :) – Phill
He perfilado la consulta SQL que se está generando y hay dos combinaciones a la izquierda, con una condición de combinación en la clave principal y una clave externa en ambas, por lo que estoy bastante seguro de que no es un producto cartesiano. Lo he logrado usando LinqToSql en el pasado. – Simon
@Simon: tome la consulta y colóquela en SQL Server Management Studio y ejecute la consulta; verá todos los resultados de todas las tablas. Es posible obtener el mismo resultado, pero tendría que escribir HQL. Vea el blog de Ayende para gráficos de objetos profundos - http://ayende.com/blog/2580/efficently-loading-deep-object-graphs – Phill