【发布时间】:2013-11-26 16:58:53
【问题描述】:
我正在尝试获得 4 个表之间的正确映射。
主表
类(ID,类名)
课程(ID,课程名称)
学生(ID,学生姓名)
关系表
ClassCourse(Id, ClassId, CourseId)
ClassCourseStudent(ClassCourseId, StudentId)
类到课程具有多对多映射。所以我们使用关系表ClassCourse来存储关系
学生使用 ClassCourse 进行一对多映射。
所以我的问题是如何为 Student 和 ClassCourse 进行映射
我的代码是
public class Class
(
public int Id {get;set;}
public string ClassName {get;set;}
public virtual ICollection<Course> Courses {get;set;}
)
public class Course
(
public int Id {get;set;}
public string CourseName {get;set;}
public virtual ICollection<Student> Students {get;set;}
)
public class Student
(
public int Id {get;set;}
public string StudentName {get;set;}
)
modelBuilder.Entity<Class>().ToTable("Class");
modelBuilder.Entity<Course>().ToTable("Course");
modelBuilder.Entity<Student>().ToTable("Student");
modelBuilder.Entity<Class>().HasMany(c => c.Courses).WithMany().Map(m => m.ToTable("ClassCourse")
m.MapLeftKey("ClassId")
m.MapRightKey("CourseId")
)
modelBuilder.Entity<Course>().HasMany(c => c.Students).WithMany().Map(m =>
m.ToTable("ClassCourseStudent")
m.MapLeftKey("ClassCourseId")
m.MapRightKey("StudentId")
最后一个映射是我要找的那个。
提前致谢。
【问题讨论】:
-
看起来差不多,到底是什么问题?
-
@JeroenVannevel 在最后一个映射中。它期望左键是 CourseId,右键是 StudentId。但是由于 ClassCourseId 是 ClassCourse 表的主键,它与 CourseId 不匹配,因此不返回任何记录。 :-(
标签: c# entity-framework mapping