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