これは多かれ少なかれ一般的な質問であり、特定のORMや言語に関するものではありません。この質問はORMの好みに関係なく出てきます。
多対多の関係をマッピングする場合、中間テーブルを隠したり、中間テーブルをモデルの一部にすることができます。中間テーブルに関係を超えた貴重なデータがある場合、マッピングをどのように処理しますか?
次の表を検討してください。
CaseWorker (id, first_name, last_name)
CaseWorkerCases (case_worker_id, case_id, date_opened, date_closed)
Case (id, client_id, field_a, field_b)
プログラマーとして、私は実際にできることを望んでいます。
CaseWorker.Cases
よりも
CaseWorker.CaseWorkerCases.Cases
一方では、テーブルCaseWorkerCasesには有用なデータが含まれており、中間テーブルを非表示にすると、そのデータへのアクセスが不便になります。一方、中間テーブルをナビゲートする必要があると、Casesにアクセスする一般的なタスクが厄介に見えるようになります。
1つの解決策は、モデル内の中間テーブルを公開してから、CaseWorkオブジェクトにラッパープロパティが機能するようにすることだと思います。何かのようなもの:
public IEnumerable<Case> Cases
{
get{return (from caseWorkerCase in this.CaseWorkerCases
select caseWorkerCase.Case);}
}
しかし、それも間違っているようです。