有没有办法在两个表之间映射一对多关系,这两个表之间有链接(连接)表?
答案 0 :(得分:3)
从概念上讲,一对多关系只是多对多关系的一个特例。使用代码(第一)方法,我们可以完全相同,定义多对多关系的简化版本。
使用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);
}
答案 1 :(得分:0)
为什么你会有一对一关系的联接表?您只需要一个外键,从一个到另一个。只有多对多关系才需要连接表。