SQL Express (IIS ローカル ホストではない) を使用してローカル ホストから Web アプリケーションを運用環境にデプロイしました。
Web アプリケーションには、コントローラー、モデル、ビュー (MVC) があります。データベーステーブルにいくつかの変更を加えました。新しいフィールドを追加するたびに、次のことを行います。
enable-migrations
add-migration addnewfieldname
update-database -verbose
すべてのモデルが新しいテーブル フィールドで更新されます。上記は、SQL Express を使用するローカル ホスト上の Web アプリケーションでうまく機能しました。
それで、すべての移行とともに本番環境に公開しました。また、本番環境では、SQL サーバーのデータベースのテーブルを変更して、新しく作成されたすべてのフィールドを含めます。
ここで問題が発生します。生産が機能していません。私は何を間違えましたか?エラーページが表示されます。
エラーメッセージは次のとおりです。
データベースが作成されてから、'DefaultConnection' コンテキストをサポートするモデルが変更されました。Code First Migrations を使用してデータベースを更新することを検討してください
アップデート
だから私は解決策を見つけました、これは素晴らしいです!
まず、UserProfile クラスに変更がないことを確認します。最初に web.config で実稼働データベースに接続していることを確認してから、次を実行します。
Enable-Migrations
Add-Migration InitialMigrations -IgnoreChanges
**this below here is key, you need to add the new field one at a time.**
add-migration addnewfield1
update-database
add-migration addnewfield2
update-database
add-migration addnewfield3
update-database
etc.
これにより、空の「InitialMigration」ファイルが生成されます。ここで、必要な変更を UserProfile クラスに追加します。変更が追加されたら、更新コマンドを再度実行します。
update-database -verbose
これで、自動移行が適用され、変更によってテーブルが変更されます。
別のキーとして、SQL Server でテーブルを変更する権限がない場合は、テーブルが変更されないため、スクリプトをシステム管理者に送信してください。これは、上記のすべてを実行した後です。