Je veux charger les entités racines et charger avec impatience tous les membres de la collection enfant et de l'agrégat.Désireux de charger la collection enfant avec NHibernate
J'ai essayé d'utiliser le SetFetchMode
dans FluentNHibernate, mais je reçois des doublons dans l'une des collections enfant depuis que j'ai une profondeur de 3 niveaux. DistinctRootEntityResultTransformer
ne supprime malheureusement que les doublons de racine.
return Session.CreateInvoiceBaseCriteria(query, archived)
.AddOrder(new Order(query.Order, query.OrderType == OrderType.ASC))
.SetFetchMode("States", FetchMode.Eager)
.SetFetchMode("Attestations", FetchMode.Eager)
.SetFetchMode("AttestationRequests", FetchMode.Eager)
.SetFetchMode("AttestationRequests.Reminders", FetchMode.Eager)
.SetResultTransformer(new DistinctRootEntityResultTransformer())
.List<Invoice>();
Puis-je utiliser plusieurs requêtes ou quelque chose de similaire pour l'archiver?
De plus, cette approche n'aboutirait-elle pas à des ensembles de résultats inutilement énormes provenant de la base de données?
Des suggestions?
En effet un bon article, mais pas sûr si je peux l'appliquer à ma situation. La solution décrite dans l'article sur le chargement rapide d'une entité racine spécifique, mon problème est que je veux charger avec impatience une collection d'entités racines. Si je devrais utiliser MultiCritera, je dois trouver un moyen de connecter toutes les différentes requêtes sans spécifier une entité spécifique. Suggestions comment cela peut-il être fait? – Kristoffer
Cet exemple a un seul niveau hiérarchique supplémentaire, mais pas de petits-enfants, pour lesquels MultiQuery/MultiCriteria semble inutile car les requêtes ultérieures ne peuvent pas référencer les résultats des requêtes précédentes (comme Requête # 1: select rootObjects r left join fetch children c où ...; Requête n ° 2: sélectionnez petits-enfants g où parent dans c). –