Domanda

Ho un'entità A che ha molte entità B ed entità C.Tutte le entità A, B e C hanno alcuni riferimenti x, y e z che dovrebbero essere caricati con entusiasmo.

Voglio leggere dal database tutte le entità A e caricare con entusiasmo le raccolte di B e C utilizzando i criteri API.Finora, sono in grado di recuperare con entusiasmo i riferimenti in "A".Ma quando le raccolte vengono caricate, i riferimenti al loro interno vengono caricati pigramente.

Ecco come lo faccio

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

La mappatura dell'entità A utilizzando Fluent è come mostrata di seguito._B e _C sono IList privati ​​rispettivamente per B e C in 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();

Non voglio apportare modifiche al file di mappatura e vorrei caricare con entusiasmo l'intera entità A.cioè.Dovrei ottenere un elenco di A dove ci sarà un elenco di B e C le cui proprietà di riferimento verranno caricate con entusiasmo

È stato utile?

Soluzione

Stai cercando di creare un prodotto cartesiano qui.Penso che NHibernate richieda la mappatura delle relazioni come insiemi anziché come sacchetti per farlo, poiché i sacchetti consentono duplicati.

In ogni caso, i prodotti cartesiani sono molto inefficienti.Utilizza invece una query multipla o query future.

Vedere:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top