我正在使用Code First Migration方法在VS 2013中开发MVC 5项目。一开始,所有工作都在本地工作,第一次我将MVC网站部署到azure。
在这两个地方(本地和Azure)都正确创建了标识表:
我面临的问题是我添加了两个新列: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中更新。
答案 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/