实体框架代码第一个一对多关系映射与链接表

时间:2011-08-23 15:42:41

标签: entity-framework ef-code-first entity-relationship

有没有办法在两个表之间映射一对多关系,这两个表之间有链接(连接)表?

2 个答案:

答案 0 :(得分:3)

从概念上讲,一对多关系只是多对多关系的一个特例。使用代码(第一)方法,我们可以完全相同,定义多对多关系的简化版本。 使用Entity Framework Tutorial中使用的相同示例,并假设从StudentCourse的一对多关系,我们会:

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);
}

答案 1 :(得分:0)

为什么你会有一对一关系的联接表?您只需要一个外键,从一个到另一个。只有多对多关系才需要连接表。