Pregunta

Tengo una entidad A que entidades hasMany B y entidades C. Todas las entidades A, B y C tienen algunas referencias x, y y z que debe ser cargado con ansiedad.

Quiero leer de la base de datos todas las entidades A y cargar las colecciones de B y C con entusiasmo el uso de criterios de API. Hasta el momento, estoy en condiciones de ir a buscar las referencias en 'A' con impaciencia. Pero cuando se cargan las colecciones, las referencias dentro de ellos están cargados de forma liviana.

Aquí es cómo lo hago

            AllEntities_A =
            _session.CreateCriteria(typeof(A))
            .SetFetchMode("x", FetchMode.Eager)
            .SetFetchMode("y", FetchMode.Eager)
            .List<A>().AsQueryable();

El mapeo de entidad A usando Fluido es como se muestra a continuación. _B y _C son ILists privados para B y C, respectivamente, en A.

        Id(c => c.SystemId);
        Version(c => c.Version);
        References(c => c.x).Cascade.All();
        References(c => c.y).Cascade.All();

        HasMany<B>(Reveal.Property<A>("_B"))
            .AsBag()                
            .Cascade.AllDeleteOrphan()
            .Not.LazyLoad()
            .Inverse()
            .Cache.ReadWrite().IncludeAll();
        HasMany<C>(Reveal.Property<A>("_C"))
            .AsBag()
            .Cascade.AllDeleteOrphan()
            .LazyLoad()
            .Inverse()
            .Cache.ReadWrite().IncludeAll();

No quiero a realizar cambios en el archivo de asignación, y me gustaría cargar toda la entidad A con impaciencia. es decir que debería obtener una lista de A de donde habrá Lista de B y C de cuyas propiedades referencia también será cargado con impaciencia

¿Fue útil?

Solución

Usted está tratando de hacer un producto cartesiano aquí. Creo que NHibernate requiere mapear las relaciones en conjuntos en lugar de bolsas para hacer eso, ya que las bolsas permiten duplicados.

De todos modos, los productos cartesianos son muy ineficientes. Utilizar un multi-consulta o consultas futuras en su lugar.

Vea:

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top