如何在Azure上回滚EF迁移

Bob*_*lth 5 entity-framework azure azure-sql-database

救命!我在Azure上托管了一个MVC4应用程序.我正在使用EF代码优先.这是我的情景:

  1. 我在我的生产数据库中设置了一个标志,以使网站显示"网站已禁用"消息,而不是通常的网站行为.

  2. 我向Staging实例发布了网站代码的更新.当我运行登台实例时,它将一些迁移应用于数据库架构.此时,如果因为数据库模式与生产代码不兼容而重新启用它,则生产实例将无法工作

  3. 当我测试登台实例时,我发现它无法正常工作.

现在我意识到我不知道如何撤销我应用的EF迁移,以便我可以重新启用Production实例并返回到运行Staging实例之前的状态.我知道如何使用Visual Studio中的程序包管理器控制台转到本地数据库中的特定迁移,但我不知道如何手动告诉Azure将数据库更新到特定的迁移.

Col*_*lin 13

导航到Azure门户上的数据库仪表板,然后选择"显示连接字符串".将ADO.NET字符串复制到命令的-ConnectionString开关中Update-Database.你应该得到这样的东西:

Update-Database 
-TargetMigration {YourMigration} 
-ConnectionString "Server=tcp:{your server name}.database.windows.net,1433;
                   Database={your db};
                   User ID={your user}@{your server};
                   Password={your password};
                   Trusted_Connection=False;
                   Encrypt=True;
                   Connection Timeout=30;" 
-ConnectionProviderName "System.Data.SqlClient"
Run Code Online (Sandbox Code Playgroud)


Thi*_*dio 3

运行一个"Get-Migrations"

它将显示迁移列表。

在那之后:

Update-Database -TargetMigration:"{NAME_OF_SELECTED_MIGRATION}"
Run Code Online (Sandbox Code Playgroud)

其中 {NAME_OF_SELECTED_MIGRATION} 将替换为您想要的名称。PS:删除“{”和“}”字符。