asp.net - 模型更改检测 ASP.NET 代码优先迁移

标签 asp.net entity-framework code-first database-migration

我已添加

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/

相关文章:

c# - 如何比较多个文本框并在它们不相等时触发验证器 C#

c# - 电子邮件模板引擎

c# - Context.Entry().GetDatabaseValues() 方法不会复制实体的子级

asp.net-mvc - 使用 Entity Framework 添加记录重复其他对象

c# - 如何在 ASCX 上设置控件的 Int 属性?

c# - fancybox jquery on gridview绑定(bind)问题的tempte字段

c# - SaveChanges() 的验证错误

entity-framework - 为什么 Entity Framework 没有按要求注释一些不可为空的列?

C# - Entity Framework - 大型种子数据代码优先

entity-framework - Entity Framework 自动迁移现有数据库