模型更改检测ASP.NET代码首次迁移

模型更改检测ASP.NET代码首次迁移,asp.net,entity-framework,code-first,database-migration,Asp.net,Entity Framework,Code First,Database Migration,我补充说 public IEnumerable<Comment> Comments { get; set; } 由此产生的迁移并没有得到对模型的更改 public partial class AddCommentsToDevice : DbMigration { public override void Up() { } public override void Down() { } } 有关于迁移语法或导致检测的原因的提示吗?您

我补充说

public IEnumerable<Comment> Comments { get; set; }
由此产生的迁移并没有得到对模型的更改

public partial class AddCommentsToDevice : DbMigration
{
    public override void Up()
    {
    }

    public override void Down()
    {
    }
}

有关于迁移语法或导致检测的原因的提示吗?

您添加了一些。您需要正确配置关系-最好使用fluent api。将此属性用于导航属性:

public virtual ICollection<Comment> Comments { get; set; }
公共虚拟ICollection注释{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);
    }
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity().HasKey(x=>x.Id);
modelBuilder.Entity()有许多(x=>x.Comments);
基于模型创建(modelBuilder);
}
我假设与注释相关的类被命名为Model

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Model>().HasKey(x => x.Id);
        modelBuilder.Entity<Model>().HasMany(x => x.Comments);

        base.OnModelCreating(modelBuilder);
    }