簡體   English   中英

從Entity Framework中的現有表創建模型

[英]Creating model from existing table in Entity Framework

我有多對多的學生課程,通過使用虛擬館藏清單我意識到了這一點,並得到了下一個生成的遷移代碼:

 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”未定義密鑰。為此EntityType定義密鑰。

您應該添加屬性[Key]屬性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。

希望這可以幫助。

您需要在組成主鍵的屬性上方的[Key]屬性。 對於復合主鍵,您還需要指定列順序。 請參閱https://msdn.microsoft.com/zh-cn/data/jj591583.aspx#Composite

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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