Entity Framework Code Первое сопоставление отношений «один ко многим» с таблицей ссылок - PullRequest
2 голосов
/ 23 августа 2011

Есть ли способ отобразить отношения один-ко-многим между двумя таблицами, между которыми есть таблица ссылок (соединений)?

Ответы [ 2 ]

3 голосов
/ 21 ноября 2014

Концептуально отношения «один ко многим» являются лишь частным случаем «многие ко многим».Используя кодовый (первый) подход, мы можем сделать то же самое, определив упрощенную версию отношения «многие ко многим».Используя тот же самый пример, который использовался в 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);
}
0 голосов
/ 23 августа 2011

Зачем вам таблица соединений для отношений один ко многим? Все, что вам нужно, это внешний ключ от одного к другому. Таблица объединения необходима только для отношений «многие ко многим».

...