0

コードマイニングによるASP.NET MVC EFアプリケーションを構築し、Azure SQL DBでAzureでホスティングしています。私が初めてこれを公表したとき、それはうまくいった。しかしその後、モデルが変更され、Azure DBのスキーマが一致するように更新されていません。私がデプロイすると、 "Execute Code First Migrations"がチェックされています。それがうまくいかない場合、私は自分のDBを削除し、Azureのポータルでそれを再作成し、更新されたトリガーになると考えました。しかし、それはうまくいかなかったので、私はAutomaticMigrationsEnabledをTrueに設定しました。それはまだ動作していないので、現在Azureの私のDBには私のテーブルがありません。 AzureのDBを私のモデルに合わせて更新して、公開されたサイトがうまく動作するようにする方法はありますか? VSローカルDBを作成クエリにスクリプト化してSQL管理スタジオで実行する方法があるかどうかを探してみましたが、その方法を見つけることができませんでした。Visual StudioからWebアプリケーションを公開するときにスキーマが更新されない

+0

配備後にアプリを実行しようとしましたか?移行が始まるのはそのときです(導入プロセス中ではありません)。 [ここ](https://docs.microsoft。/ aspnet-mvc/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/mvc-application)を参照してください。必要であれば 'update-database -Script'を使ってスクリプトを生成することができます。 –

+0

デプロイメントが完了したら、VSはウェブサイトを自動的に起動します...そうです。最初(DBを削除する前に)はうまく始まりますが、新しいフィールドを使用するページに移動するとエラーが発生します。そして私は "update-database -Script"を試みましたが、_MigrationHistory(これは私が試したすべてのものの後にDBに追加された唯一のものです)のInsertクエリを私に与えました。 – Andarta

答えて

0

パブリッシュ設定でupdate databaseを選択し、接続文字列がcorrectcであり、まだ更新されていないことを確認した場合は、

このような問題が発生することがありますが、私のパブリッシュファイルは正しいですし、パブリッシュ時にSQLの更新が行われるように設定されています。しかし時にはデータベースが更新されておらず、 "バッキングコンテキストが変更されました"というエラーが表示されることがあります。時には、更新されていない移行テーブルが原因です。残念ながら、データベースを同期させる唯一の方法は、両方の移行履歴を比較して確認することです。[dbo].[__MigrationHistory]

公開されたサーバーに最新の移行履歴がない場合は、パッケージマネージャコンソールに入力:

Update-Database -Script -TargetMigration [migration name]

「移行名は、」Visual Studioは、データベースをもたらすために使用できるSQLスクリプトを生成します、あなたの公開されたサーバーが持っていた最後移行の名前でなければなりませんそのターゲット移行からの最新の移行まで。

時には(まれにしか私のために1〜2回しか起こらなかった)上記のことは何らかの理由で(通常はマイグレーションファイルが削除されたため)動作しない場合がありますデータベース全体、そしてチェリーは必要なSQLを選択します。

Update-Database -Script -SourceMigration:0

これは、すべての移行のためのスクリプトを生成します、あなたは、桜はあなたが行った変更に基づいて選ぶことができます。 「最新の」変更はファイルの最後に近づきます。すべての遊走変更があれば、チェックを開始します:あなたはSQL移行履歴の更新を含めるようにしてください選択しなければ

IF @CurrentMigration < '201710160826338_mymigration' BEGIN

あなたは、あなたが必要とするビットを選択するためにこれを使用することができます。これは、もしブロックの最後になると、このようなものになります。移行履歴を含む

INSERT [dbo].[__MigrationHistory]([MigrationId], [ContextKey], [Model], [ProductVersion]) VALUES (N'201710101645265_test', N'API.Core.Configuration', 'Some long checksum')

をVisual Studioが再び問題がないことを保証します。

これが役に立ちます。

関連する問題