如何撤消上一个添加迁移命令?

Posted

技术标签:

【中文标题】如何撤消上一个添加迁移命令?【英文标题】:How do I undo the last Add-Migration command? 【发布时间】:2014-02-14 05:35:33 【问题描述】:

我已经使用Add-Migration 命令创建了一个迁移,但我想更改该迁移的名称。如何撤消迁移命令,以便使用新的所需名称重新生成它?

是否只是删除生成的文件的问题,或者这可能是个坏主意?

【问题讨论】:

【参考方案1】:

只需使用命令:

Update-Database nameMigration -context nameContext

然后

Remove-migration -Context nameContext

【讨论】:

【参考方案2】:

如果您尚未使用Update-Database 执行迁移,您可以使用相同的名称再次运行Add-Migration(您可能需要使用-Force)重新执行脚手架。这在Add-Migration 命令的输出中注明。

【讨论】:

这不是一个好的解决方案,因为这不会恢复 ApplicationDbContextModelSnapshot @***er 你是对的,所以回复***.com/a/46921867/690958 是更好的解决方案 也可以清理文件吗?对我来说,它离开了迁移文件,但使用了空的 Up() 和 Down() 方法。【参考方案3】:

EntityFrameworkCore 2.0 附带模型快照。您需要运行删除迁移命令才能更新模型快照。我已经读过,如果您手动删除迁移,EF Core 将识别任何更新并为您还原快照,但这对我不起作用。

https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/migrations

https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet#dotnet-ef-migrations-remove

【讨论】:

【参考方案4】:

如果您没有使用过Update-Database,您可以删除迁移文件。如果您已经运行了更新,您应该使用 Update-Database -TargetMigration "NameOfPreviousMigration" 回滚它,然后删除迁移文件。

参考:

http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/

【讨论】:

如果是第一次添加迁移呢? @Jimmyt1988,使用 Update-Database –TargetMigration: $InitialDatabase 然后删除呢?我不明白。然后删除什么? @tnk479 迁移文件。编辑使其更清晰 很遗憾看到旧版本的 EF(如 EF 6)没有 drop-databaseremove-migration 命令【参考方案5】:

通过此命令更新您上一次完美迁移:

Update-Database –TargetMigration

【讨论】:

【参考方案6】:

只需使用命令

Remove-migration

它将删除最后添加的迁移并更新快照。它不会影响数据库,因此您必须首先回滚数据库。

【讨论】:

仅在 EF Core 中。 我希望它和drop-database 命令一起出现在 EF 6 中。我太习惯了【参考方案7】:

要添加到 @Ben 的答案,当使用 dotnet ef 命令种类时,这是您需要的删除命令:

dotnet ef migrations remove

这将删除您的上次迁移并更新模型快照。

【讨论】:

以上是关于如何撤消上一个添加迁移命令?的主要内容,如果未能解决你的问题,请参考以下文章

实体框架 - 重新开始 - 撤消/回滚所有迁移

如何编写迁移来撤消Laravel中的唯一约束?

由于我删除了 phpMyadmin 中的表,Php artisan 无法正常工作,如何撤消此操作?

在不向撤消堆栈添加撤消命令的情况下更改 QTextEdit

如何使用数组添加撤消列表?

在 Rails 中撤消脚手架