【问题标题】:Code first Add-Migration only picks up changes to existing models not new modelsCode first Add-Migration 仅获取对现有模型的更改,而不是新模型
【发布时间】:2019-04-12 20:07:14
【问题描述】:

我有一个 ASP.NET MVC EF 代码第一个项目。我复制了它并从中制作了另一个项目。我没有更改任何命名空间或项目名称。我复制了现有的数据库并使用不同的名称制作了副本。代码优先迁移在原始项目中运行良好。在新复制的项目中,他们只拾取对现有模型的更改,例如添加新字段或更改字段名称。如果我尝试添加新的模型类,Add-Migration 不会接受该更改。

我试过this,但没用。我试过this,但没用。

我尝试删除迁移历史文件夹和 dbo._MigrationHistory 表数据并使用 Enable-Migrations 重新创建迁移。我尝试删除迁移文件夹中的现有迁移并使用Add-Migration Initial -IgnoreChanges 然后update-database 创建另一个初始迁移。然后添加我的更改。这些都不起作用。

【问题讨论】:

  • 您在上下文中为新类添加DbSet()
  • 谢谢你这样做了。自从我这样做并查看这部分以来已经有一段时间了。

标签: sql-server asp.net-mvc entity-framework ef-code-first


【解决方案1】:

您需要运行 Enable-Migrations –EnableAutomaticMigrations

现在说您需要先将 Address 表添加到您的数据库代码中:

创建您的新模型地址

创建你的配置文件,一些东西

class AddressConfiguration : EntityTypeConfiguration<Address>
{
    public AddressConfiguration()
        : base()
    {
        HasKey(p => p.AddressId);
        ToTable("Address");    

    }
}

在主 XYZContext.cs 文件中添加 DbSet 和 modelBuilder 数据

数据库集

public DbSet<Address> Address {get; set;}

模型构建器

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Configurations.Add(new AddressConfiguration());
}

通过 Visual Studio 的包管理器控制台运行 update-database,确保从下拉列表中选择了正确的项目,这很可能是一个 .Repository 命名的项目。

您的新表现在应该存在于您的数据库中。

【讨论】:

  • 我不需要 EnableAutomaticMigrations 但剩下的就是我所做的,与@SteveGreen 的评论相同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-03
  • 1970-01-01
  • 1970-01-01
  • 2021-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多