我已添加
public IEnumerable<Comment> Comments { get; set; }
到 ASP.net MVC 项目中的模型。我运行以下命令在包控制台中生成迁移
PM> Add-Migration AddCommentsToDevice
并且生成的迁移没有接受对模型的更改
public partial class AddCommentsToDevice : DbMigration
{
public override void Up()
{
}
public override void Down()
{
}
}
有关迁移语法或导致检测的原因有什么提示吗?
最佳答案
您添加的内容很少。您需要正确配置关系 - 最好使用 Fluent api。使用它作为导航属性:
public virtual ICollection<Comment> Comments { get; set; }
重要 - 始终使用 ICollection,而不是 IEnumerable 作为导航属性,并使它们虚拟 - 感谢这个 ef 将能够跟踪更改。
然后在 DbContext 中添加以下代码:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Model>().HasKey(x => x.Id);
modelBuilder.Entity<Model>().HasMany(x => x.Comments);
base.OnModelCreating(modelBuilder);
}
我假设与 Comments 相关的类名为 Model。
关于asp.net - 模型更改检测 ASP.NET 代码优先迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23502902/