2016-08-12 6 views
0

私は初期のスキーマを作成し、データベース更新を実行する大規模な移行を作成しました。EFマイグレーションを誤ると、ロールバック、削除、再追加、あるいは単に新しいものを追加するのがより役に立ちます

その後、私はDateTime型であるはずのフィールドが誤ってstring型であることに気付きました。私は自分のモデルでそれを修正しました。

ここでは、誤ってマイグレーションする前にデータベースをマイグレーションする必要があります。マイグレーションをいったん削除してから、もう一度マイグレーションをやり直してください。または、修正プログラムのみをパッチする新しい移行を追加するだけです。

私が間違った情報を持つどんな混乱した移行を望んでいないので、私はロールバック、削除、そして再追加に傾いているのですか?間違った移行があるのは無意味だと思う。

プロダクション環境ではマイグレーションを一度も使用していないので、混乱が起こると思いますので、私はそれらの力を認識していないと思います。だから、古い移行で間違いが起きる可能性があるのか​​、それとも新しいモデル/エンティティを追加するときに間違いなく、データベース全体の進捗状況を示すべきかを誰かに明確に伝えて欲しい。

+1

私は個人的に、リモートUATとPRODデータベースを更新するという単一の目的でマイグレーションを使用します。グリーンフィールドアプリケーションの開発を始めたら、私はDropCreate初期化子の1つを使用し、移行を気にしません。展開の準備ができたら、私は移行に切り替えます。私はいつもクリスがここで説明しているのと同様にマイグレーションを進めています(http://cpratt.co/migrating-production-database-with-entity-framework-code-first/#at_pco=smlwn-1.0&at_si=54ad5c7b61c48943&at_ab= 12およびat_pos = 0およびat_tot = 1)。 –

+0

@SteveGreene Entity Framework DropCreate機能を使用していますか?もしそうなら、あなたはEF Core 1.0(EF7) –

+0

でそれを実装する方法を知っていますか?申し訳ありませんが、コアタグを逃しました。それは異なっていますが、実行可能です:Database.EnsureDeletedとそれに続くDatabase.EnsureCreatedを使用します。 https://github.com/aspnet/EntityFramework/issues/3042 –

答えて

1

移行は、スキーマの変更の間にデータを保存するのに役立つ単なるツールです。これらは、dev/test/productionやdev-localデータベースなどの複数のデータベースサーバをチーム環境で管理する場合に特に便利です。

サーバーが1つしかない場合は、移行を書き直すのが安いので、この方法で修正してください。

チームの全員がすでに移行を適用している場合、または保存したいデータをデータベースに適用した場合は、新しい移行を使用して列を更新する方が簡単です。

つまり、マイグレーションを使用するには正しい方法または間違った方法はなく、履歴の書き換えに関連するコストのみです。

関連する問題