EF 4.3迁移 - 如何生成降级脚本?

may*_*ash 11 entity-framework ef-code-first ef-migrations entity-framework-4.3

我有一个问题,我无法通过网络找到答案.

我正在使用CodeFirst EF 4.3.1迁移与MsSQL.

我添加了几个迁移,现在我想生成一个脚本,用于在两次迁移之间进行升级/降级.

对于升级,我运行以下命令成功重现升级脚本:

PM> Update-Database -Script -SourceMigration:"201205161144187_AddPostAbstract" -TargetMigration:"201205161203310_BlogLimitsAndTableRename"
Run Code Online (Sandbox Code Playgroud)

但是,对于降级,我运行以下命令,该命令失败并出现以下错误:

PM> Update-Database -Script -SourceMigration:"201205161203310_BlogLimitsAndTableRename" -TargetMigration:"201205161144187_AddPostAbstract"
Scripting the downgrade between two specified migrations is not supported.
Run Code Online (Sandbox Code Playgroud)

任何想法如何生成降级脚本?

谢谢.

Lad*_*nka 13

看起来迁移API期望您只想从"上一版本"降级.

如果BlogLimitsAndTableRename是您最近的迁移(最后一次应用),您只需运行:

Update-Database -Script -TargetMigration:"201205161144187_AddPostAbstract"
Run Code Online (Sandbox Code Playgroud)

如果不是您上次迁移,则需要先将开发数据库还原到它:

Update-Database -TargetMigration:"201205161203310_BlogLimitsAndTableRename"
Run Code Online (Sandbox Code Playgroud)

现在你应该能够使用第一个命令来获取脚本.

  • 我想过让数据库处于状态 5,现在得到一个脚本将它从 5 降级到 2。EF 迁移迫使我从 5 降级到 4,然后从 4 降级到 3,然后从 3 降级到 2,而我希望是生成一个脚本,该脚本已经包含所有这些降级,而无需真正执行它们。(例如,对于升级,您可以将数据库处于状态 5 并生成从 2 升级到 5 的脚本)。 (2认同)
  • 您可以创建从当前版本(5)到版本2的降级脚本.您只需要使用第二个迁移的名称运行第一个提到的命令. (2认同)