Zuordnung zu mehreren Tabellen mit Fluent nHibernate

8

Hier ist meine Situation ..
Angenommen, Sie haben die folgenden Modell-Entitäten, die eigene Tabellen darstellen:

Filme [Movie_Id, Titel, Bewertung, ..]
Schauspieler [Actor_Id, Vorname, Nachname, ..]
Director [Director_Id, Vorname, Nachname, ..]

Und eine weitere Entität / Tabelle namens "Recommendations", die Empfehlungen zwischen Benutzern innerhalb einer Website darstellt. Die Idee ist, dass eine Empfehlung von jedem Typ sein kann, d. H. Jemand, der einen Schauspieler empfiehlt, oder jemand, der einen Film empfiehlt. Grundsätzlich sollte die Tabelle in etwa so aussehen:

Empfehlungen [Empfehlung_Id, Objekt_Id, Objekt_Typ, ..]

Und hier ist, was ich feststecke. Wie kann ich diese Beziehungen in nHibernate mit Fluent abbilden? Ich meine .. während der Zuordnung, kann ich nicht den Typ angeben (welche Tabelle verwandt), weil das zur Laufzeit bestimmt ist, aber ich kann mich nicht nur auf die ID verlassen, denn es kann nicht implizieren, zu welcher Tabelle gehört.
Stellen Sie sich zum Beispiel diesen Eintrag in der Recommendations-Tabelle vor:

Empfehlungs_Id - Objekt_Id - Objekt_Typ
83001--4010123 --- "M"

Im Grunde speichere ich eine Char-Kennung (in diesem Fall steht "M" für Tabelle "Movies") um zu wissen, zu welcher Tabelle Object_Id gehört. Ich kann Object_Id nicht einfach ohne Object_Type speichern.

Als letzte Kommentare möchte ich hinzufügen, dass ich alle Beispiele für Tabelle-pro-Klasse, Tabelle-pro-Unterklasse, Tabelle-für-konkrete-Klasse gesehen habe, aber ich glaube, dass keine davon passt Situation, da Movies_Id, Actors_Id, Directors_Id, ... alle unterschiedlich sind, also Recommendations_Id. Ich meine, es gibt hier keine Vererbung der Basisklasse-Kind-Klasse, sie teilen die IDs überhaupt nicht.

Ich hoffe, ich mache es mir klar. Vielen Dank im Voraus.

    
Matias Bello 24.01.2012, 15:20
quelle

1 Antwort

11

Das NHibernate-Mapping, nach dem Sie suchen, lautet <any/> . Hier sind ein paar Ressourcen, die Ihnen helfen, mit dieser NHibernate Mapping-Funktion Schritt zu halten:

Ich glaube, dass die * .hbm.xml, für die Sie fotografieren, etwa so aussieht:

%Vor%

Sie sollten dies mit Fluent NHibernate erreichen können, wie im Recommendations-Mapping:

%Vor%     
Daniel Schilling 24.01.2012, 16:31
quelle