次のようなマッピング テーブル構造を持つレガシー データベースを用意します。このタイプの関係を流暢にマッピングする方法を見つけようとしています。
マッピング テーブルを使用してメモを格納する複数の親テーブルがあります。
親テーブルは次のようになります。
P1 テーブル
ID iSomething
P2 テーブル
ID iSomethingElse
親テーブルを取り、それをメモ テーブルにマップするマッピング テーブルがあります。
マッピング テーブル
ID i_RecordUniqueID
ID i_NoteID
ID i_RecordID
列 i_RecordID には、i_RecordUniqueID 値がどの親テーブルから来たかを示す数値が含まれています。マッピング テーブルにはこれら 3 つの列のみがあり、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();