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