我创建了一个简单的模型并且
公开课电影
{
public Int64 MovieSer { 获取;放; } //PK
公共字符串?电影 ID { 获取;放; }
公共字符串? MovieUID { 获取;放; }
公共字符串?标题{得到;放; }
公共列表类别{ get;放; }
}
公开课类别
{
public Int64 CategorySer { get; set; } //PK
public Int64 MovieSer { get; set; } //FK
public string CategoryId { get; set; }
public string StudyName { get; set; }
public DateTime CreationDate { get; set; }
public string StudyUID { get; set; }
}
电影数据库上下文
公共类 MovieDbContext :DbContext
{
公共 MovieDbContext(DbContextOptions 选项):基(选项)
{
}
public DbSet<Movie> Movies { get; set; }
}
Q1:运行 pm>add-migration 后,类别表包含一个新列 MovieId = table.Column(类型:“nvarchar(450)”,可空:true) 如果初始模型中不存在列名 MovieId ,为什么它要尝试创建列名 < Category> ? Q2:为什么为表 Category 分配了不正确的约束
约束:表=>
{
table.PrimaryKey("PK_Movie", x => x.MovieId);
table.ForeignKey(
name: "FK_Category_Movie_MovieId",
column: x => x.MovieId,
principalTable: "Movie",
principalColumn: "MovieId");
});
当然,当我运行应用程序时,它失败了
Microsoft.Data.SqlClient.SqlException(0x80131904):列名“MovieId”无效。
顺便说一句:如果我不包含类别表,那么一切正常,因此问题与表关系有关。
任何解释将不胜感激
看起来您的类别表正在尝试使用 MovieId 因为它是 PK。这应该是一个 CategoryId。 MovieId 将是返回到电影实体/表的 FK。