簡體   English   中英

多個表之間的實體框架映射

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM