Web デプロイを使用して、最初に EF5 コードを使用して MVC4 アプリケーションをデプロイしています。アプリケーションとデータベースの Web デプロイを使用する「開発」という公開プロファイルを作成しました。これは、「コードを最初に移行する」チェックボックスを使用して、アプリケーションの起動時に移行を実行します。出版はしばらくの間うまくいきました。ある時点で、「test」と呼ばれる新しい発行プロファイルを追加して、別のサーバーにデプロイしました。これは、デプロイの ftp メソッドを使用し、自動移行を使用しません。これもうまくいきます。ただし、古い「開発」公開プロファイルを再度使用しようとすると、VS は設定を自動的に dbDacFx の方法 (「コードの最初の移行を実行する」ではなく「データベースを更新する」チェックボックス) に変更し、元に戻すことができません。そうだった。「テスト」の使用中に、プロジェクトにいくつかの変更が加えられました プロファイルですが、これが原因であると思われるものは何もありません。私のプロジェクトがコードを最初に使用しないとVSが考える理由を誰か知っていますか?
6 に答える
この質問をして以来、MVC と EF の複数のバージョンでこの問題に何度か遭遇しました (もちろんすべてのコードが最初です)。それが発生した場合は、変更を発行プロファイルに保存しないでください。「デバッグ」ビルド構成であることを確認し、ソリューションをクリーンにして、ソリューションを再構築してください。それでもうまくいかない場合は、Visual Studio を再起動して、もう一度やり直してください。これまでのところ、これは常に私の問題を解決してきました。
これが正しい答えです-私にとって問題は解決されました。接続文字列の名前を DbContext とまったく同じに変更するだけです。
public ApplicationDbContext()
: base("Vocabulary.Domain.ApplicationDbContext", throwIfV1Schema: false)
{
}
名前には、「Vocabulary.Domain.ApplicationDbContext」のような名前空間を含める必要があることに注意してください。.pubxml ファイルを更新することを忘れないでください。
<ObjectGroup Name="Vocabulary.Domain.ApplicationDbContext" Order="1" Enabled="True">
この記事では、パブリッシュ ダイアログに [コードを最初に移行して実行 (アプリケーションの起動時に実行)] チェック ボックスがある場合とない場合について説明します。
私はこの問題を抱えていましたが、私にとっては、他の場所で文書化されているのとは異なる原因がありました。
私のアプリケーションは、ソリューション内の多くのプロジェクトに分散しています。インターフェイスと別のビュー/プレゼンテーション モデルを使用してデータベースへの呼び出しをラップしているため、フロント Web プロジェクトには DbContext クラスを含むプロジェクトへの直接参照がありませんでした。これは、サイトをローカルで実行するのに問題がなかったことに注意してください。これは、フロント エンド Web プロジェクトの開発者が、プレゼンテーション レイヤーを迂回して直接データベースにアクセスする誘惑に駆られないようにするためです。
この参照を追加するとすぐに問題が修正され、[Publish Profile] ダイアログに [Execute Code First Migrations] チェックボックスが表示されるようになりました。
上記の何も機能しなかったため。azure から
をダウンロードしましたが、最初は問題なく動作しましたpublish profile