代码优先Add-Migration仅选择对现有模型的更改而不是新模型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码优先Add-Migration仅选择对现有模型的更改而不是新模型相关的知识,希望对你有一定的参考价值。
我有一个ASP.NET MVC EF代码第一个项目。我复制了它并从中创建了另一个项目。我没有更改任何名称空间或项目名称。我复制了现有的数据库并制作了一个不同名称的副本。代码优先迁移在原始项目中正常工作。在新复制的项目中,他们只接收对现有模型的更改,例如添加新字段或更改字段名称。如果我尝试添加新的模型类,Add-Migration
不会接受该更改。
我试图删除迁移历史记录文件夹和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仅选择对现有模型的更改而不是新模型的主要内容,如果未能解决你的问题,请参考以下文章