Code First Migrationアプローチを使用して、VS 2013でMVC 5プロジェクトを開発しています。最初は、ローカルでも、MVCサイトをazureに初めてデプロイしたときでも、すべて正常に機能していました。
両方の場所(ローカルおよびAzure)で、IDテーブルが正しく作成されました。
- __MigrationHistory
- AspNetRoles
- AspNetUserClaims
- AspNetUserLogins
- AspNetUserRoles
- AspNetUser
私が直面している問題は、2つの新しい列:ユーザーのこのデータを保存する名前と姓。次に、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は12つのソリューションがあります。
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 Portal接続文字列の関連するサーバー名、ユーザー名、データベース、パスワードのデータを置き換えます
2.コードから移行を実行します。
次を追加する Application_Start
Global.asaxで
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/