2016-05-15 19 views
2

私はEntity Framework 6でMVC 5を使用していますが、自動移行は無効になっており、シードは使用されていません。Entity Framework 6でデータベースが削除されましたか?

私は手をつないで、MVCとEFにはかなり新しいと言います。

新しいコードベースを本番環境にアップロードしたばかりで、モデルが変更されたことを忘れました。私が新しいバージョンにログインすると、それは投げられ、エラーページを投げた。さて、私は最新の移行スクリプトを書くことを忘れていました - 私はそれを行い、SSMSに接続し、データベースがなくなったことを発見しました。

バックアップから復元して、マイグレーションを適用すると、すべてが正常に動作するようになります。

モデルが変更されたときに私のコードがデータベース全体を削除したのはなぜですか?前述のように、自動移行は無効になっており、この動作は開発マシンでは発生しません。変更されたモデルに関するエラーが発生します。編集追加する


:フェルナンダの答えで初期化パターンを見ている一方で、それらのどれも、「データベースをドロップして、他に何もしない」と言っていません。私のデータベースは削除され、MDFとLDFはなくなりました.SMSとその代わりに何も作成されていません。空のデータベースがその場所に作成された場合、私はもう少し理解しています。つまり、ユーザーアカウントにはDBOがありますが、マスターではないため、データベースを削除できましたが、新しいデータベースを作成することはできませんでしたか?

+1

答えはわかりませんが、文脈クラスの 'OnModelCreating()'に 'Database.SetInitializer (null);'を必ず入れています。 –

+0

慎重に思えます。私は驚いたことに、開発環境のいずれにも起こらないということです。 – RemarkLima

答えて

2

コード・ファーストでのデータベースの初期化戦略についての本を読む:

http://www.entityframeworktutorial.net/code-first/database-initialization-strategy-in-code-first.aspx

は、あなたのdbcontextの初期化を確認し、オプションDropCreateDatabaseIfModelChangesコメント

//Database.SetInitializer(new DropCreateDatabaseIfModelChanges(であることを確認してください));

+0

私はイニシャライザセットがないので、デフォルトの 'CreateDatabaseIfNotExists'だと思います。これは私の開発環境で見た動作です。 – RemarkLima

+0

設定ファイルでdb initializerを設定することもできます。それぞれの環境ごとにチェックします。両方が等しいか? –

+0

あなたはWeb.configを意味しますか? – RemarkLima

関連する問題