web-dev-qa-db-ja.com

C#Code-First移行、アップ/ダウン?

パッケージマネージャーコンソールでadd-migrationコマンドを使用して、モデルの移行を生成し始めました。私の質問は、上下の方法です。 downメソッドの目的は、すべての依存関係を削除し、それらが既にデータベースにある場合はテーブルを削除することだと思いますか?また、upメソッドの前にdownメソッドが実行されますか? upメソッドは逆で、テーブル/インデックスなどを作成/更新しますか?

時々これを使用すると、downメソッドは多くのテーブルを作成し、それらは削除されますか?最近、多くのテーブルを作成および削除しましたが、upメソッドでもほとんど同じことが起こりました。どうして?

39
Patrick

Upメソッドは、データベースを現在の状態(以前の移行で表される)から現在のコード移行で予想される状態にアップグレードします。 Downメソッドは逆の操作を行います-現在の移行からすべての変更を削除し、データベースを以前の移行で予期された状態に戻します。移行をインストール/アンインストールするようなものです。 update-databaseを呼び出すと、これらのメソッドの1つのみが実行されます。 Downメソッドを使用するには、アップグレードのターゲット移行を明示的に指定する必要があります。ターゲットの移行が古いものである場合、移行APIはDownメソッドを自動的に使用し、データベースをダウングレードします。

70
Ladislav Mrnka

@Ladislav Mrnkaに追加するだけです。私は初めてDown()を使用する必要があり、それを機能させるのに少し時間がかかりました。

Update-Database -Target:201407242157114_46

私の最後の移行は47(新しいものが追加された)です。 これはニースの説明です データベースをロールバックし、悪い移行を削除する方法の。

それが他の魔術師の見習いを助けるかもしれないことを願っています:)

25
HerGiz

ここで、Upメソッドは、データベースを現在の状態からユーザーが期待する新しい状態にアップグレードします。 Downメソッドはその逆を行います。データベースを以前の移行から予想された状態に戻します

0