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

问题描述 投票:0回答:1

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

我试过this但它没有用。我尝试了this,它没有用。

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

sql-server asp.net-mvc entity-framework ef-code-first
1个回答
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;}

模型构建器

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.