Can Entity Framework handle many to many relationship without an intersection object?

后端 未结 2 364
有刺的猬
有刺的猬 2021-01-11 23:30

Using database first model: Let\'s say we have the classic tables Student, Course and StudentCourse (the latter obviously having FKs t

相关标签:
2条回答
  • 2021-01-11 23:47

    According to this tutorial, you'll get the desired behaviour if your StudentCourse table only contains the foreign-key columns. If it contains any other columns, EF will generate an intermediate entity to represent the join.

    In this case, dropping the surrogate key from the StudentCourse table and replacing it with a composite primary key should work.

    0 讨论(0)
  • 2021-01-11 23:47

    You can do it in EF Code First using ICollections. For example:

    public class Student 
    { 
        public int ID { get; set; }
        public string Name { get; set; }
        public virtual ICollection<Course> Courses { get; set; }
    
        public Student()
        {
            Courses = New HashSet<Course>();
        }
    }
    

    Repeat for Course and swap it all over. This will create three tables in your database (Student, Course and StudentCourse) with a m-to-m relationship. Most importantly StudentCourse will be an invisible linking table that has no Entity in your model.

    0 讨论(0)
提交回复
热议问题