AParticipant
は複数Role
の sを持つことができると言います。そしてもちろん、 aRole
は複数Participant
の s を持つことができます。したがって、基本的にこれは多対多の関連付けです。
Entity Framework は、ジャンクション テーブルに 2 つの外部キーしかない場合、純粋な多対多の関連付け (接続クラスなし) のみをマップします。あなたの場合、テーブルParticipantsRole
に主キーのみが含まれていた場合、モデルの生成時にParticipantId
クラスは作成されませんでした。とをナビゲーション プロパティとして持っていたでしょう。RoleId
ParticipantsRole
Participant.Roles
Role.Participants
ただし、モデルは で生成されておりParticipantsRole
、それを削除したいと考えています。(またはそうでない場合は、それに戻ります)。
これはあなたができることです:
ParticipantRoles
クラス図から削除します。
- データベース テーブルを変更して
ParticipantRoles
、両方が主キーを形成する 2 つの FK 列のみを持つようにします。
- データベースからモデルを更新し、[
ParticipantsRole
追加] タブで選択します。
これにより、純粋な多対多の関連付けを持つモデルが得られます。
ただし、これを行う前によく考えてください。M2m アソシエーションには、1-m-1 アソシエーションに進化する方法があります (現在のように)。その理由は、遅かれ早かれ関連付けに関するデータを記録する必要性が感じられるため、ジャンクション テーブルにはより多くのフィールドが必要になり、純粋なジャンクション テーブルではなくなるからです。あなたの場合、ある日の参加者の役割には、固定された順序、またはデフォルトとしてマークされた順序が必要であると想像できます。実稼働環境で m2m アソシエーションを 1-m-1 に変更することは、大幅なオーバーホールになる可能性があります。- 考慮すべき点...