Wie kann ich dies abbilden:
%Vor%Auf der Projektseite sind einige Beispiele, aber keine geht über diese Situation. Es gibt dieses Beispiel:
%Vor%Aber es geht davon aus, dass Konto öffentliche Feld Kunden hat und dieses Szenario ist anders als meins. Ich habe einige mögliche Optionen ausprobiert, aber keine funktioniert:
%Vor%Private Felder eignen sich gut für einfache Eigenschaftenzuordnungen, aber für Auflistungszuordnungen ist ganz anders. Irgendeine Idee? Danke
Die einfachste Lösung besteht darin, Ihre Sammlung als öffentliche Eigenschaft Orders anstelle der GetAllOrders () -Methode verfügbar zu machen. Dann ist Ihr Mapping
%Vor%und deine Klasse ist
%Vor%Wenn das für Sie nicht funktioniert, können Sie private Eigenschaften zuordnen , indem Sie das Reveal-Mapping von Fluent NHibernate verwenden.
Bearbeitet, um hinzuzufügen: Nachdem Sie dies getan haben, ist die richtige Antwort:
%Vor%Die Sammlung muss als geschützte virtuelle Eigenschaft verfügbar gemacht werden, um die Proxyfunktion zu ermöglichen:
%Vor%Diese Antwort brachte mich dazu der richtige Track.
Danke. Deine Lösung ist in Ordnung. Es kann jedoch Situationen geben (hypothetisch), wenn Sie Ihre private Sammlung nicht preisgeben möchten. Dieses Zuordnungsszenario wird in Ihrem verknüpften Post nicht erläutert, da der Unterschied zwischen dem Zuordnen einfacher Eigenschaften, wie in diesem Post- und Auflistungszuordnung beschrieben, besteht. Mein Versuch, HasMany (x = & gt; Reveal.Properties ("_ orders")) zu verwenden, ist wegen einer ausgelösten Ausnahme fehlgeschlagen.
Sie können eine vollständig private Sammlung mit Reveal.Member()
abbilden, aber sie hat eine bestimmte und nicht naheliegende Einschränkung: Die Expression
, die HasMany()
akzeptiert, muss entweder IEnumerable<TReferenced>
oder object
zurückgeben.
Für Ihre Klasse:
%Vor% Die folgende Zeile füllt die Sammlung _orders
:
Der Vollständigkeit halber - die folgende Zeile gibt einen Compiler-Fehler:
%Vor%Tags und Links fluent-nhibernate