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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码优先Add-Migration仅选择对现有模型的更改而不是新模型相关的知识,希望对你有一定的参考价值。

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

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

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

答案

您需要运行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。

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

以上是关于代码优先Add-Migration仅选择对现有模型的更改而不是新模型的主要内容,如果未能解决你的问题,请参考以下文章

C# 代码优先迁移,向上/向下?

实体框架代码优先:迁移失败并更新数据库,强制不必要的(?)添加迁移

迁移需要很长时间才能应用到数据库

Add-Migration 命令使用啥来比较模式?

仅实体框架代码错误:支持上下文的模型自创建数据库以来已更改

Entity Framework Core 2.0 Add-Migration 不会创建任何迁移文件