Wie Sie aus der Frage und Antwort, die Sie verknüpft haben, sehen können, können Sie dies erreichen, indem Sie Beziehungen unidirektional machen. Also anstatt direkt wie zu beantworten, werde ich fragen warum in der Hoffnung, zu einem besseren "wie."
Ich sehe auf jeden Fall, warum Sie Sammlungen nicht immer gerne abgerufen werden, und das ist, warum NHibernate Lazy lädt (und warum NHibernate immer lädt Sammlungen, wenn Sie Pre-Fetch). NHibernate wird diese Sammlung nicht tatsächlich abrufen, bis Sie tatsächlich danach gefragt haben. Also meine Frage ist warum wollen Sie NHibernate nicht die Sammlung zu laden, wenn Sie daran arbeiten? Was soll NHibernate tun, wenn Sie auf eine untergeordnete Sammlung in Ihrer Entität zugreifen?
Update:
Sie haben wirklich nicht meine Frage beantworten, warum (vielleicht bin ich stur gerade), aber in Ordnung, Sie steuern möchten. Nun, der einfachste Weg, um NH davon abzuhalten, seinen Job zu machen, besteht darin, es ihm nicht zu sagen (d. H. Es nicht zu kartieren). Das bedeutet, dass Sie das "viele" (Sammlungs-) Ende der Beziehung nicht abbilden. Sie können die Sammlung weiterhin in Ihrer Klasse aufbewahren, aber solange Sie NHibernate nicht angewiesen haben, sie zu füllen, indem Sie sie zu Ihrer Zuordnungsdatei hinzufügen, wird dies nie der Fall sein. Anschließend können Sie eine PopulateCollection
-Methode hinzufügen, um die NH-Abfrage auszuführen und die Ergebnisse in dieser Auflistung zu speichern. Sie verlieren jedoch die netten Semantiken, die NHibernate für Sammlungen bereitstellt, da sie Änderungen daran nicht verfolgen können. Sie müssen Ihre eigenen Add- und Remove-Methoden implementieren.
Also, im Grunde David Kemps Antwort auf die andere Frage.
der Grund ist einfach, ich möchte manuell steuern, was geladen wird und was nicht. Ich möchte nicht, dass Abfragen unter der Haube in die Datenbank gehen. Außerdem ist es sehr ärgerlich, wenn Entitäten beim Debuggen lazy geladen werden. Ich würde eine Null Ausnahme erwarten, wenn ich auf einer nicht geladenen Sammlung operiere. – Drevak