如何在Azure中启用Code First迁移

时间:2015-03-11 05:21:16

标签: c# entity-framework azure ef-migrations

我正在使用Code First Migration方法在VS 2013中开发MVC 5项目。一开始,所有工作都在本地工作,第一次我将MVC网站部署到azure。

在这两个地方(本地和Azure)都正确创建了标识表:

  • __ MigrationHistory
  • AspNetRoles
  • AspNetUserClaims
  • AspNetUserLogins
  • AspNetUserRoles
  • AspNetUser

我面临的问题是我添加了两个新列:Name和LastName来为用户存储此数据。然后,我使用First Code Migration更新我的架构。它在我的本地机器上正确更新。新列已添加到AspNetUser表中。

但是,当我将其部署到Azure时,该表还没有包含新列。这导致我收到错误:

Server Error in '/' Application.

Invalid column name 'Name'.
Invalid column name 'LastName'.
Invalid column name 'Name'.
Invalid column name 'LastName'.
Invalid column name 'Name'.
Invalid column name 'LastName'.

那么,我怎样才能启用代码首次迁移到Azure中的MVC项目?因此,当我从Visual Studio部署它时,数据库模式也会在Azure中更新。

1 个答案:

答案 0 :(得分:1)

以下是2个解决方案:

<强> 1。使用程序包管理器控制台中的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"

从Azure门户连接字符串中替换相关的服务器名称,用户名,数据库和密码数据

<强> 2。从代码运行迁移:

将以下内容添加到Global.asax

中的Application_Start
protected void Application_Start()
{
    //....

    // Running Migrations from Code:
    var configuration = new Configuration();
    var migrator = new DbMigrator(configuration);
    migrator.Update();
}

调用Update方法会将目标数据库更新为最新的迁移。

取自: https://romiller.com/2012/02/09/running-scripting-migrations-from-code/