10

私はEF5コードを使用してMVC4アプリケーションを展開するためにweb deployを使用しています。アプリケーション起動時にマイグレーションを実行するために、「Execute Code First Migrations」チェックボックスを使用して、アプリケーションとデータベースにWebデプロイメントを使用する「開発」という公開プロファイルを作成しました。出版はしばらくの間うまくいった。ある時点で、「テスト」という新しいパブリッシュプロファイルを追加して、別のサーバーにデプロイしました。このサーバーは、配布のftpメソッドを使用し、自動マイグレーションは使用しません。これも問題なく動作します。しかし、私の古い "開発"公開プロファイルを再び使用しようとすると、VSは設定を自動的にdbDacFxの方法( 'Execute Code First Migrations'ではなく 'Update database'チェックボックス)に変更し、それはそうだった。 'Test'プロファイルを使用している間にプロジェクトにいくつかの変更がありましたが、それが原因で私が思うようなものは何もありません。 VSがなぜ私のプロジェクトでもうコードを使わないと思うのか誰にも分かりますか?「コードを最初にマイグレーションする」チェックボックスが公開プロフィールから消えた

答えて

4

ここが正しいですanswer - 私の問題を解決しました。接続文字列の名前をDbContextの名前に変更してください。

 public ApplicationDbContext() 
     : base("Vocabulary.Domain.ApplicationDbContext", throwIfV1Schema: false) 
    { 
    } 

名前に「Vocabulary.Domain.ApplicationDbContext」のような名前空間を含める必要があることに注意してください。 .pubxmlファイルを更新することを忘れないでください:

<ObjectGroup Name="Vocabulary.Domain.ApplicationDbContext" Order="1" Enabled="True"> 

このarticleは何も上記ませんので、「コードファーストの移行(アプリケーション起動時に実行)を実行」ダイアログが無いダニを持っているか持ってい

8

この質問をして以来、私は複数のバージョンのMVCとEF(複数のコードでは最初にcソース)でこの問題に何度も遭遇しました。それが起こったら、公開プロファイルに変更を保存せず、あなたが 'デバッグ'ビルド構成になっていることを確認して、ソリューションをクリーンアップし、ソリューションを再構築してください。すべてが失敗した場合は、Visual Studioを再起動してもう一度やり直してください。 これまでのところ、これは私にとって問題を常に解決してきました。

+2

ええ、それは私に数回起こった。そして、VS2013にアップグレードした後、VSを何回再起動しても、「コード一次移行を実行」は表示されません。 –

+0

データベースユーザーのほとんどすべてを学んだ後、ビジュアルスタジオの再起動ができました。私はほとんどこれを理由に自分自身を殺そうとしました –

+0

あなたは@rafaelの問題を抱えていますが、公開を削除して再作成してください。 –

1

これはVS2013で私に起こりました。ソリューションのクリーニングも再起動もしませんでした。私は移行を "再有効化"しようとしました。プロジェクトで既に移行が有効になっているというエラーメッセージが表示されても、「コードを最初に実行する」チェックボックスが再び表示されました。

+1

どのようにして移行を再度有効にしますか? – abalter

+1

@abalterは再び 'enable-migrations'を実行します – gldraphael

+0

enable-migrationsを再び実行しています –

0

を公開すると説明働いた。
私はこの問題を持っていた私にとって、それは私が他の場所で文書化さ見つけたいずれかへの別の原因を持っていた私は、紺碧からpublish profileをダウンロードし、それが最初の時間に完璧

0

を働きました。

私のアプリケーションは、ソリューション内の多くのプロジェクトに広がっています。インターフェイスと別のビュー/プレゼンテーションモデルを使用して呼び出しをデータベースにラップすると、私のフロントWebプロジェクトにはというDbContextクラスを含むプロジェクトへの直接参照はありませんでした。これはサイトをローカルで実行しても問題ありませんでした。フロントエンドWebプロジェクトの開発者がPresentationレイヤーをバイパスし、より直接的にデータベースにアクセスするように誘惑されないように、これを行います。

このリファレンスを追加するとすぐに問題が解決され、[プロファイルの公開]ダイアログで[コードを最初に実行する]チェックボックスが表示されます。

関連する問題