如何在Entity Framework Code First中表示Bridge表

Amr*_*dan 11 c# entity-framework ef-code-first entity-framework-4.1

我试图找出如何表示两个实体之间的桥接表(多对多关系)我正在使用实体框架代码优先

Student:
   StudentID int  PK
   StudentName VARCHAR(50)

Class:
   ClassID int PK
   ClassName VARCHAR(50)

StudentClass:
   StudentID INT PK
   ClassID INT PK
Run Code Online (Sandbox Code Playgroud)

应该使用什么样的最佳类结构来在实体框架代码中表示它,如何从桥接表中进行选择并插入其中.

我应该代表这样的类:

    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; }
    }
Run Code Online (Sandbox Code Playgroud)

EL *_*bov 13

简而言之:之间的这种关系类型StudentClass被称为多对多的关系在EF术语.

实体框架以一种很好的方式处理参与多对多关系的表.如果联结表(有时称为桥表,关联表,链接表等)只包含外键而没有其他列,则该表由EF抽象,并且双方获得一个导航属性,暴露另一个的集合.侧.

您需要的是首先为上面的表生成实体模型,或者像下面的帖子中那样定义代码的第一个结构 - 使用Code First创建多对多映射.

基本上,根据您的结构,您需要设置OnModelCreating适合您的类中的关系的方法.

protected override void OnModelCreating(DbModelBuilder modelBuilder)
Run Code Online (Sandbox Code Playgroud)

根据您的查询需求,您可以查看以下参考资料: