2009-06-09 13 views
2

Domain:(Fließend) NHibernate Wörterbuch-Mapping mit Klasse Key

class Category 
    string Name 
class Product 
    IDictionary<string, Product> Parents 

Tables:

Categories (ID, Name) 
    Products (ID) 
    ProductParents (ID, ParentID, ChildID, CategoryID) 

Die Fragen: Muss ich Liste der Mutter Produkte erhalten. Ist es möglich, übergeordnete Produkte Wörterbuch zuzuordnen, so dass ich tun kann: product.Parents ["CategoryName"] und es wird mir eine Liste der übergeordneten Produkte für die angegebene Kategorie geben.

Oder vielleicht

product.Parents[Category("CategoryName")] 

wenn ich

IDictionary<Category, Product> Parents 

verwenden Oder wie kann ich das tun? Vielleicht eine Methode wie product.GetParentProducts (String-Kategorie) anstelle von Eigenschaften? Ich würde lieber ein Wörterbuch verwenden.

Beachten Sie, dass ich die ProductMapping-Klasse nicht wirklich einführen möchte.

Antwort

1

Dies ist mit NHibernate möglich; Was Sie suchen, heißt ternary association.

Dies ist derzeit nicht verfügbar in Fluent NHibernate, aber ich arbeite daran, es hinzuzufügen. Jedoch wird es wahrscheinlich wegen der "Umbauten", die in FNH stattfinden, wahrscheinlich noch nicht verfügbar sein. Am besten verwenden Sie eine Standard-HBM-Datei für dieses Mapping.

Wenn Sie in FNH weiter untersuchen möchten (Hinweis: Sie müssen Ihre eigene lokale Kopie der Bibliothek pflegen), können Sie sehen, was ich getan habe at github.

+0

Danke für das Aufzeigen. Soweit ich sehen kann, ist dies jedoch verfügbar, wurde im Rahmen von http://code.google.com/p/fluent-nibernate/issues/detail?id=226 festgelegt und ist in http://code.google integriert .com/p/fluent-nhibernate/Quelle/Detail? r = 524. Ich werde die neueste Version testen und testen. – queen3

+0

Ja, aber es ist mein Verständnis, dass das oben genannte (was ich implementiert habe) nutzlos ist ... http://code.google.com/p/fluent-nhibernate/issues/detail?id=230 Ich habe nicht wirklich nachgedacht Wenn ich es implementiert habe, ist es zwar möglich, ein korrektes, * aussehendes * Mapping mit diesem Patch zu generieren, aber es funktioniert nicht wirklich für NHibernate. NH erwartet ein IDictionary, das der ursprüngliche Patch nicht unterstützt (siehe Problem 230). Ich habe einen Hack-Patch erstellt, der für dich funktionieren könnte, aber es ist wieder nicht im FNH-Stamm, also bist du wieder dabei, deine eigene FNH-Kopie zu behalten. –

+0

Ich habe deinen Hack versucht, es hat nicht für mich funktioniert. Ich bekomme "2 generische Argumente erwartet, aber 1". Das kann daran liegen, dass ich das Feature missbrauche, da ich immer noch kein Experte bin. Also benutze ich weiterhin eine Zwischeneinheit (was ziemlich gut ist) und ich denke, ich werde auf eine "offizielle" Korrektur und hoffentlich ein bisschen Dokumentation warten ... ;-) – queen3

Verwandte Themen