有没有办法在两个表之间映射一对多关系,两个表之间有链接(联接)表?
最佳答案
从概念上讲,一对多关系只是多对多关系的一个特例。使用代码(第一种)方法,我们可以做完全相同的事情,定义多对多关系的简化版本。
使用 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);
}
关于entity-framework - Entity Framework 代码优先与链接表的一对多关系映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7163725/