如何在同一个 .cs 文件上重新创建初始迁移

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

与 EF Code First 中常见的一样,我生成了一个“初始创建”迁移文件,其中位于我的数据库的过时模型(我正在开发应用程序,因此模型仍在更改)。现在我在代码中定义了一个“新模型”,而不是为此创建新的迁移,我只想更新现有的文件,因为它仍然是初始创建的迁移。

我尝试过使用这个但没有任何运气

更新数据库-targetmigration $initialcreate

它回来了

Unable to update database to match the current model because there are pending changes and automatic migration is disabled. Either write the pending model changes to a code-based migration or enable automatic migration. Set DbMigrationsConfiguration.AutomaticMigrationsEnabled to true to enable automatic migration.
You can use the Add-Migration command to write the pending model changes to a code-based migration.

我也尝试过这个,但它总是创建一个新的 .cs 文件

添加-迁移InitialCreate

我会感谢你的帮助

entity-framework entity-framework-6
5个回答
14
投票

在这里你可以看到我是如何解决这个问题的。

要小心这种方法,因为在我的场景中,我仍处于开发阶段,所以我不需要保留数据库或数据。

如果您想覆盖当前的“InitialCreate”文件并重新生成数据库,请按照以下步骤操作:

1)在包管理器控制台中运行:

添加-迁移InitialCreate-force

2)删除物理数据库(使用SSMS、T-SQL或您喜欢的)

3)在包管理器控制台中运行:

更新数据库-TargetMigration:0 |更新数据库-force |更新数据库-force

如果您不关心当前的“InitialCreate”文件本身,想要创建一个新文件并重新生成数据库,请按照以下步骤操作:

1) 删除当前的“InitialCreate”.cs 文件

3)在包管理器控制台中运行:

添加-迁移InitialCreate

4)删除物理数据库(使用SSMS、T-SQL或您喜欢的)

4)在包管理器控制台中运行:

更新数据库-TargetMigration:0 |更新数据库-force |更新数据库-force


10
投票

我的项目已经解决了。
在包管理器控制台中运行:

  1. 删除数据库
  2. 删除-迁移
  3. 添加-迁移InitialCreate
  4. 更新数据库

3
投票

只需从“Migrations”文件夹中删除初始迁移文件,然后重试。


1
投票

尝试通过在包管理器控制台中写入

Update-Database
来更新数据库。


0
投票

这对我有用:

Add-Migration Zero -project <Project> -StartUpProject <Project>

您的目标程序集/项目在哪里

用途:

get-help add-migration

寻求更多帮助。

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