2015-02-23 66 views
0

我有很多一對多的關係,學生,課程,我使用虛擬集合列表實現,我的下一個生成的遷移代碼:在實體創建從現有的表模型框架

CreateTable(
      "dbo.PersonCourses", 
      c => new 
       { 
        Person_Id = c.Int(nullable: false), 
        Course_Id = c.Int(nullable: false), 
       }) 
      .PrimaryKey(t => new { t.Person_Id, t.Course_Id }) 
      .ForeignKey("dbo.People", t => t.Person_Id, cascadeDelete: true) 
      .ForeignKey("dbo.Courses", t => t.Course_Id, cascadeDelete: true) 
      .Index(t => t.Person_Id) 
      .Index(t => t.Course_Id); 

現在我要地圖表PersonCourses一些C#類我寫

[Table("PersonCourses")] 
public class PersonCourses 
{ 

    [ForeignKey("Person")] 
    [Required] 
    public int PersonId { get; set; } 

    [ForeignKey("Course")] 
    [Required] 
    public int CourseId { get; set; } 
} 

,但它失敗:「PersonCourses」沒有密鑰defined.Define此的EntityType關鍵。

回答

1

您應該添加屬性[關鍵]屬性PersonCoursesId:

public partial class Category 
     { 
      [Key] 
      public int PersonCoursesId { get; set; }  

      [ForeignKey("Person")]  
      public int PersonId { get; set; } 

      [ForeignKey("Course")] 
      public int CourseId { get; set; }    
     } 

的問題是,只有當它知道表的主鍵EF可以工作。默認情況下,EF將其識別爲名稱爲ID的主鍵屬性。如果您的表有另一個主鍵,您可以使用屬性[Key]標記它或使用流暢配置設置Key。

希望這會有所幫助。