Концептуально отношения «один ко многим» являются лишь частным случаем «многие ко многим».Используя кодовый (первый) подход, мы можем сделать то же самое, определив упрощенную версию отношения «многие ко многим».Используя тот же самый пример, который использовался в Entity Framework Tutorial , и предполагая отношение «один ко многим» от Student
до Course
, мы получили бы:
public class Student
{
public Student() { }
public int StudentId { get; set; }
public string StudentName { get; set; }
public virtual ICollection<Course> Courses { get; set; }
}
public class Course
{
public Course() { }
public int CourseId { get; set; }
public string CourseName { get; set; }
// We don't need this side of the relationship
// public virtual ICollection<Student> Students { get; set; }
}
...
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Student>()
.HasMany<Course>(s => s.Courses)
.WithMany(/* c => c.Students */) // 'WithMany' goes empty
.Map(c => {
c.MapLeftKey("Student_id");
c.MapRightKey("Course_id");
c.ToTable("StudentAndCourse");
});
base.OnModelCreating(modelBuilder);
}