2009-03-01 7 views
0

Ich habe eine Tabelle A, die eine Verweise auf eine Tabelle B durch eine dritte Tabelle C. C enthält den Primärschlüssel von A und B. Für jedes A gibt es höchstens einen Datensatz in C. Wenn ich versuche, ein Mapping für A zu erstellen, so dass ich auf B referenziere, verwende ich die References-Funktion, aber es erlaubt mir nicht anzugeben, dass das Mapping eine andere Tabelle und nicht direkt durchläuft. Was ist der richtige Weg, das zu tun?Fließende NHibernate One-One-Mapping durch zusätzliche Tabelle

+0

Gibt es einen besonderen Grund für die Existenz der Tabelle C? Da das DB-Design betrachtet wird, sieht es nicht wie eine Eins-zu-Eins-Zuordnung aus. – gcores

+0

ein Grund ist, dass sein Legacy-Code, ein anderes ist zu verhindern, dass die Haupttabelle (A) zu viele Spalten haben. – eulerfx

Antwort

0

Ich glaube, ich habe die Antwort in Google Code Samples gefunden. In der Mapping-Klasse kann zusätzlich geschrieben werden:

WithTable("SomeTable", c => { c.Map(x => x.Col1); }); 
0

Die einzige Abbildung, die ich weiß, dass das ein HasManyToMany in der Abbildung von A wäre tun könnte:

HasManyToMany(x => x.B) 
    .WithTableName("C") 
    .WithParentKeyColumn("A_Id") 
    .WithChildKeyColumn("B_Id"); 

Das Problem ist, dass die Zuordnung für A ist eine Liste von Bs hat, nicht nur eine. Ich weiß nicht, wie du es schaffen könntest, um nur eins sauber zu bekommen.