gpt4 book ai didi

c# - Entity Framework 回滚并删除错误的迁移

转载 作者:IT王子 更新时间:2023-10-29 03:31:36 24 4
gpt4 key购买 nike

我在 C# 中为我的项目使用 EF 6.0,并进行手动迁移和更新。我在数据库上有大约 5 次迁移,但我意识到最后一次迁移很糟糕,我不想要它。我知道我可以回滚到以前的迁移,但是当我添加一个新的(固定的)迁移并运行 Update-Database 时,即使是错误的迁移也会应用。

我试图回滚到之前的迁移并删除迁移错误的文件。但是,当我尝试添加新的迁移时,更新数据库时出现错误,因为迁移文件已损坏(更具体地说,第一行代码将表 A 重命名为 B 并且是下一行,EF 正在尝试更新表名称 A - 可能是一些 EF 错误)。

是否有一些我可以运行的查询,它会告诉 EF 类似“忘记上次迁移,就像它从未存在过一样,它很糟糕”?类似 Remove-Migration 的东西。

编辑1我找到了适合我的解决方案。将模型更改为良好状态并运行 Add-Migration TheBadMigration -Force。这将重新搭建最后一个未应用的迁移。

无论如何,这仍然不能完全回答原来的问题。如果我更新数据库到错误的迁移,我没有找到如何回滚和创建新迁移的好方法,不包括错误的迁移。

谢谢

最佳答案

你有两个选择:

  • 您可以从错误的迁移中取出 Down 并将其放入新的迁移中(您还需要对模型进行后续更改)。这有效地汇总到一个更好的版本。

    我对已进入多个环境的事物使用此选项。

  • 另一种选择是针对您已部署的数据库实际运行 Update-Database –TargetMigration: TheLastGoodMigration,然后从您的解决方案中删除迁移。这有点像 hulk smash 的替代方案,并且需要针对任何使用错误版本部署的数据库执行此操作。

    注意:要重新构建迁移,您可以使用 Add-Migration [existingname] -Force。然而,这将覆盖您现有的迁移,因此请务必仅在您已从数据库中删除现有迁移后才执行此操作。这与删除现有迁移文件并运行 add-migration

    的作用相同

    我在开发时使用这个选项。

关于c# - Entity Framework 回滚并删除错误的迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22680446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com