【问题标题】:How to re-create initial migration on the same .cs file如何在同一个 .cs 文件上重新创建初始迁移
【发布时间】:2016-10-08 04:38:28
【问题描述】:

在 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 文件

添加-迁移初始创建

感谢您的帮助

【问题讨论】:

  • 据我了解,您不想创建新的迁移?如果那时您可以尝试删除整个迁移文件夹并再次执行Enable-Migration。您将看到新的InitialCreate 文件将包含您的模型。但是,这似乎不合适,因为代码优先迁移旨在列出包含您在模型中添加的内容的不同迁移时期(无论是类还是财产)。您可以选择回滚到之前的迁移(您已经使用 -targetmigration 进行过迁移),因此非常灵活。
  • 另外,如果上述方法不起作用,您可以尝试Update-Database -TargetMigration:0
  • @ShawnYan 是的,我不想创建新的迁移,因为我的模型仍在更改,所以还没有“迁移”。
  • 好的,我明白了,你能回滚到初始创建吗?
  • @ShawnYan 是的,我可以,我的想法是在数据库设计过程结束之前只保留一个“初始迁移”文件

标签: entity-framework entity-framework-6


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    尝试通过在包管理器控制台中写入Update-Database 来更新您的数据库。

    【讨论】:

      【解决方案3】:

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

      1. 删除数据库
      2. 移除-迁移
      3. 添加迁移初始创建
      4. 更新数据库

      【讨论】:

      • 在我的情况下,我不得不右键单击解决方案,并出于某种原因选择清洁解决方案菜单项。
      • @Dinch 谢谢,节省了我的时间。我认为您所做的事情是必要的,否则在我的情况下,这里的大多数建议都不起作用。
      • @Dinch 我也必须运行两次删除迁移。
      • 我建议更新答案并将@Dinch 建议添加到清洁解决方案(在执行删除迁移之后)。我猜 Visual Studio 正在将信息缓存在 .pdb 文件或其他地方。添加清洁解决方案后,这对我有用。
      【解决方案4】:

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

      请谨慎使用这种方法,因为在我的场景中,我仍处于开发阶段,因此我不需要保留数据库或数据。

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

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

      添加-迁移 InitialCreate -force

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

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

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

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

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

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

      添加-迁移初始创建

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

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

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

      【讨论】:

        猜你喜欢
        • 2018-03-07
        • 2022-01-21
        • 2011-05-05
        • 1970-01-01
        • 2013-07-17
        • 2015-06-27
        • 1970-01-01
        • 1970-01-01
        • 2021-07-26
        相关资源
        最近更新 更多