2014-02-27 40 views
0

我正在使用實體框架代碼在我的項目中創建數據庫。我有以下課程流暢API之間有兩個表:代碼中的多對多關係問題c#

  1. 學生

定義多對多的關係

modelBuilder.Entity<Student>().HasMany(e => e.Courses) 
      .WithMany(e => e.Students).Map(m => 
      { 
       m.MapLeftKey("StudentId"); 
       m.MapRightKey("CourseId"); 
       m.ToTable("StudentCourse"); 
      }); 

這將定義一個許多人很多之間的關係學生課程並將在數據庫中創建一個新表StudentCourse

現在我想定義一個新的關係(即可能是1至1 OR 1對多

之間
  1. StudentCource
  2. 任何其他表

哪有我這樣做與實體框架代碼第一??

回答

0

你要什麼沒有可能不爲StudentCourse

public class StudentCourse 
{ 
    public int Id {get;set;} 
    public Student Student {get; set;} 
    public Course Course {get; set;} 

} 

創建自己的類(POCO),然後使用流利的API,使這三個變量之間的關係

modelBuilder.Entity<StudentCourse>() 
    .HasRequired(i => i.Student) 
    .WithMany(u => u.StudentCourses) 
    .HasForeignKey(i => i.StudentId) 
    .WillCascadeOnDelete(false); 

modelBuilder.Entity<StudentCourse>() 
    .HasRequired(i =>i.Course) 
    .WithMany(d =>d.StudentCourses) 
    .HasForeignKey(i => i.CourseId) 
    .WillCascadeOnDelete(false); 

在哪裏StudentCourses是學生課程中的導航屬性,課程級別

您可以使用定義爲主鍵的Id或使用外鍵這兩個表的主:

modelBuilder.Entity<StudentCourse>() 
    .HasKey(i => new {i.StudentId,i.CourseId }); 

在我看來使用id作爲主鍵,讓你更簡單的東西製作StudentCourse和另一個表之間的關係。