这看起来是一个非常常见的任务,但我找不到简单的方法来完成它。
我想撤消上次应用的迁移。我本来期望一个简单的命令,比如
PM> Update-Database -TargetMigration:"-1"
相反,我能想到的是:
PM> Get-Migrations
Retrieving migrations that have been applied to the target database.
201208012131302_Add-SystemCategory
201207311827468_CategoryIdIsLong
201207232247409_AutomaticMigration
201207211340509_AutomaticMigration
201207200025294_InitialCreate
PM> Update-Database -TargetMigration:"CategoryIdIsLong"
(至少我可以只使用名称,跳过时间戳......)
有更容易的方法吗?
我想对此线程添加一些说明:
Update-Database -TargetMigration:"name_of_migration"
您上面所做的事情是说您想要回滚所有迁移,直到保留指定的迁移。因此,如果您使用 GET-MIGRATIONS 并且发现您有 A、B、C、D 和 E,那么使用此命令将回滚 E 和 D 以让您到达 C:
Update-Database -TargetMigration:"C"
另外,除非有人可以提出相反的评论,否则我注意到您可以使用序数值和短 -Target 开关(因此,-Target 与 -TargetMigration 相同)。如果您想回滚所有迁移并重新开始,您可以使用:
Update-Database -Target:0
0,上面,甚至会回滚第一次迁移(这是一个破坏性的命令——在使用它之前请确保你知道自己在做什么!)--如果您使用上面的语法需要目标迁移的名称,则无法执行此操作(在应用迁移之前,第 0 个迁移的名称不存在!)。因此在这种情况下,您必须使用 0(序数)值。同样,如果您应用了迁移 A、B、C、D 和 E(按该顺序),则序数 1 应引用 A,序数 2 应引用 B,依此类推。因此,要回滚到 B,您可以使用以下任一方法:
Update-Database -TargetMigration:"B"
or
Update-Database -TargetMigration:2
2019 年 10 月编辑:
据此相关answer https://stackoverflow.com/a/40788279/6640527在类似的问题上,正确的命令是-Target
对于 EF Core 1.1,虽然它是-Migration
适用于 EF Core 2.0。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)