Eager Laden Kinder Sammlung mit NHibernate
Ich soll zum laden von Stamm-Personen und eifrig laden alle Kind Sammlung und Aggregat Mitglieder.
Haben versucht, verwenden Sie die SetFetchMode
im FluentNHibernate, aber ich bin immer Duplikate in einem der untergeordneten Auflistung, da ich eine Tiefe von 3 Ebenen. DistinctRootEntityResultTransformer
leider nur entfernt den root-Duplikationen.
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>();
Konnte ich mit mehreren Abfragen oder etwas ähnliches zu archivieren?
Darüber hinaus würde nicht diesen Ansatz führen zu unnötig großen Ergebnismengen aus der Datenbank?
Irgendwelche Vorschläge?
InformationsquelleAutor der Frage Kristoffer | 2009-06-02
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lösung gefunden, aber es ist nicht schön. Zuerst habe ich zu gehen und finden Sie alle die Rechnung-IDs, dann verwende ich Sie in der multiquery und dann am Ende die Ergebnisse filtern, die durch eine HashedSet. Wegen der großen Anzahl von Elementen, manchmal konnte ich nicht verwenden, die normalt Einschränkung.Und war gezwungen, senden Sie es als ein string.
Eines vorgeschlagenen tweaks?
InformationsquelleAutor der Antwort Kristoffer
Deine Frage zu beantworten: ja, es führt zu großen Ergebnismengen.
Schlage ich zu:
InformationsquelleAutor der Antwort Stefan Steinegger
Während es möglicherweise nicht genau was Sie suchen, würde ich empfehlen, sich auf diesen Artikel:
Eager loading-Aggregat mit viele untergeordnete Sammlungen
Wenn Sie sich um den rest dieser Website findest du noch mehr Beiträge, diskutieren eifrig laden und andere große nHibernate Zeug.
InformationsquelleAutor der Antwort tmatuschek