質問はタイトルにあります:
多対多の関係テーブルをエンティティとして作成するにはどうすればよいですか?
あなたの質問は非常に合理的だと思います。このドキュメント部分を見てください: Chapter 24. Best Practices . 抜粋:
エキゾチックな関連付けマッピングを使用しないでください。
実際の多対多の関連付けの実用的なテスト ケースはまれです。ほとんどの場合、「リンク テーブル」に格納されている追加情報が必要です。この場合、中間リンク クラスに対して 2 つの 1 対多の関連付けを使用することをお勧めします。実際、ほとんどの関連付けは 1 対多および多対 1 です。このため、他の関連付けスタイルを使用する場合は慎重に進める必要があります。
それを処理する方法は、ペアリング オブジェクトを導入することです。したがって、Employee
持つ が多数ある場合Contacts
、 を持つことができますEmployeeContact
。このようにして、EmployeeContact をより多くの/新しい属性 (IsMain、IsActive など) で充実させることができるため、多くのことを得ることができます。
このシナリオでは、両側のマッピングは
one-to-many
(設定)していますone-to-many
があります(設定)many-to-one
(relation) Employeeがありますmany-to-one
(関係)連絡先がありますしたがって、最後にマッピングは通常ですが、サブクエリなどを使用して従業員または連絡先を検索できます。
注: その場合、ペアリング テーブルに独自の代理キー (EmployeeContactId など) がある場合に適しています。いつでも追加できます..たとえば、IDを使用して...