代码优先Add-Migration仅选择对现有模型的更改,而不是对新模型的更改

时间:2019-04-12 20:07:15

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

我有一个ASP.NET MVC EF代码第一个项目。我复制了它并从中制作了另一个项目。我没有更改任何名称空间或项目名称。我复制了现有数据库,并使用其他名称进行了复制。代码优先迁移在原始项目中可以正常工作。在新复制的项目中,它们仅对现有模型进行更改,例如添加新字段或更改字段名称。如果我尝试添加新的模型类,则Add-Migration不会接受该更改。

我尝试过this,但没有成功。我尝试了this,但没有成功。

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

1 个答案:

答案 0 :(得分:1)

您将需要运行 Enable-Migrations –EnableAutomaticMigrations

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

创建新模型地址

创建您的配置文件

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

    }
}

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

DbSet

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

modelBuilder

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

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

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