[英]Entity Framework mapping between multiple tables
我正在嘗試獲取4個表之間的正確映射。
MainTables
類(Id,ClassName)
課程(編號,課程名稱)
學生(編號,學生姓名)
關系表
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")
最后一個映射是我正在尋找的映射。
提前致謝。
我認為您必須重新設計。 現在,您正在嘗試將復合鍵指定為外鍵,但無法完成。
我要做的是創建一個單獨的模型,該模型簡單地存儲課程與課程的組合,並提供單個參考鍵。 這將產生一個額外的表,但允許您執行所需的操作。
class Student {
public int StudentId {get; set;}
}
class Class {
public int ClassId {get; set;}
}
class Course {
public int CourseId {get; set;}
}
class ClassCourse {
public int ClassCourseId {get; set;}
public int ClassId {get; set;}
public int CourseId {get; set;}
}
現在,每個類都應具有ClassCourse
對象的列表,而不是Course
,並且每個Course
應該具有ClassCourse
對象的列表。 現在它們並沒有直接鏈接在一起,而是仍然通過中間對象連接在一起,您可以將Student
對象連接到ClassCourse
的主鍵上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.