Haben Sie eine Legacy-Datenbank mit Mapping-Tabellenstrukturen wie folgt. Ich versuche herauszufinden, wie man diese Art von Beziehung fließend abbildet.Fließende nHibernate Mapping mit Ternary Mapping Tabelle
Es gibt mehrere übergeordnete Tabellen, die eine Zuordnungstabelle zum Speichern von Notizen verwenden.
Die übergeordneten Tabellen wie folgt aussehen:
P1 Tabelle
ID iSomething
P2 Tabelle
ID iSomethingElse
Es gibt eine Zuordnungstabelle, die eine übergeordnete Tabelle nehmen und Ordnen Sie es einer Notizentabelle zu.
Mapping Table
ID i_RecordUniqueID
ID i_NoteID
ID i_RecordID
Die Spalte i_RecordID einen numerischen Wert enthält, der anzeigt, welche der übergeordneten Tabelle i_RecordUniqueID Wert herkommt. Die Zuordnungstabelle hat nur diese drei Spalten und ist ein ternärer Primärschlüssel. Hier
ist die Notentabelle:
Anmerkung Tabelle
ID i_NoteID
Die Abfragetabelle P1 Notizen zu finden, ist wie folgt:
Select n.*
from P1 p
inner join Mapping m on p.iSomething = m.i_RecordUniqueID and m.i_RecordID = 1
inner join Note n on m.i_NoteID = n.i_NoteID
Die Abfragetabelle P2 Notizen zu finden ist wie folgt:
Select n.*
from P2 p
inner join Mapping m on p.iSomething = m.i_RecordUniqueID and m.i_RecordID = 2
inner join Note n on m.i_NoteID = n.i_NoteID
In meiner Zuordnungsdatei für Elterntabellen habe ich eine Zuordnung wie die folgende. Ich weiß nicht, wie ich die i_RecordID-Einschränkung hinzufügen kann.
HasManyToMany<Note>(x => x.Notes)
.Table("Mapping")
.ParentKeyColumn("i_RecordUniqueID")
.ChildKeyColumn("i_NoteID")
.Cascade.All();