【问题标题】:Model change detection ASP.NET code first migrations模型更改检测 ASP.NET 代码首次迁移
【发布时间】:2014-06-23 13:13:28
【问题描述】:
我已经添加了
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()
{
}
}
关于迁移语法或导致检测的任何提示?
【问题讨论】:
标签:
asp.net
entity-framework
code-first
database-migration
【解决方案1】:
你增加了一点。您需要正确配置关系 - 最好使用 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。