13

2 つのエンティティ (多対多の関係) 間のブリッジ テーブルを表現する方法を見つけようとしています。Entity Framework Code First を使用しています。

Student:
   StudentID int  PK
   StudentName VARCHAR(50)

Class:
   ClassID int PK
   ClassName VARCHAR(50)

StudentClass:
   StudentID INT PK
   ClassID INT PK

Entity Framework Code First でそれを表現するために使用する最適なクラス構造は何ですか。ブリッジ テーブルから選択して挿入するにはどうすればよいですか。

クラスを次のように表す必要があります。

    public class Student
    {
        public int StudentId { get; set; }
        public string StudentName { get; set; }

        public List<Class> Class { get; set; }

    }


    public class Class
    {
        public int ClassId { get; set; }
        public string ClassName { get; set; }

        public List<Student> Students { get; set; }
    }
4

2 に答える 2

14

要するに: EFの用語では、との間のこの関係タイプはStudent対多の関係とClass呼ばれます。

Entity Frameworkは、多対多の関係に参加しているテーブルを適切に処理します。ジャンクションテーブル(ブリッジテーブル、アソシエーションテーブル、リンクテーブルなどと呼ばれることもあります)が外部キーのみで構成され、他の列がない場合、そのテーブルはEFによって抽象化され、両側がナビゲーションプロパティを取得して、もう一方のコレクションを公開します。側。

必要なのは、最初に上記のテーブルのエンティティモデルを生成するか、次の投稿のようにコードファースト構造を定義することです-コードファーストを使用した多対多マッピングの作成

基本的に、構造に応じてOnModelCreating、クラスの関係に適したメソッドを設定する必要があります。

protected override void OnModelCreating(DbModelBuilder modelBuilder)

クエリのニーズに応じて、次のリファレンスを確認することをお勧めします。

于 2013-01-03T23:50:51.443 に答える