以下のようなマッピングテーブル構造を持つレガシーデータベースがあります。私はどのようにこのタイプの関係をうまくマッピングするかを考えようとしています。3進マッピングテーブルを使用した流暢なnHibernateマッピング
マッピングテーブルを使用してメモを保存する複数の親テーブルがあります。
親テーブルは以下のようになります。
P1表
ID iSomething
P2表
ID iSomethingElse
親テーブルを取るマッピングテーブルがあるとノートテーブルにマップします。
マッピングテーブル
ID i_RecordUniqueID
ID i_NoteID
IDは
i_RecordIDがi_RecordUniqueID値から来た親テーブルを示す数値を含む列
をi_RecordID。マッピングテーブルはこれらの3つの列のみを持ち、三元の主キーです。ここで
がノートテーブルです:
(注)表
ID i_NoteID
次のようにテーブルP1のノートを見つけるためのクエリは次のとおりです。
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
テーブルP2のノートを見つけるためのクエリがされます次のようになります。
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
私の親テーブルのマッピングファイルには、以下のような関連があります。私はi_RecordID制約を追加する方法を知らない。
HasManyToMany<Note>(x => x.Notes)
.Table("Mapping")
.ParentKeyColumn("i_RecordUniqueID")
.ChildKeyColumn("i_NoteID")
.Cascade.All();