实体框架代码与链接表的第一个一对多关系映射
答
为什么你会有一个一对多关系的连接表?所有你需要的是从一个到另一个的外键。只有多对多关系才需要连接表。
答
从概念上讲,一对多关系只是多对多的特殊情况。使用代码(第一种)方法,我们可以完全相同,定义多对多关系的简化版本。使用 在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);
}
我发现你的老问题更好,至少它提供了更多的字段:http ://*.com/q/7064796/270591 – Slauma
正确,但没有回应。我无法相信这种情况非常罕见。 – Minnie
在您的旧问题上做一些小改动,将问题推到活动问题之上。我认为这是一种更好的方式,而不是再次创建完全相同的问题,但使用更少的上下文。或者更好:在你的旧问题中提供额外的信息和澄清,这可能会提高你获得答案的机会。 – Slauma