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
A
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.
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
ein Grund ist, dass sein Legacy-Code, ein anderes ist zu verhindern, dass die Haupttabelle (A) zu viele Spalten haben. – eulerfx