29

パッケージマネージャコンソールでadd-migrationコマンドを使用して、自分のモデルの移行を生成することを開始しました。私の質問は、上下の方法です。私はダウンメソッドの目的は、すべての依存関係を削除し、それらがすでにデータベースにある場合はテーブルを削除することだと仮定しますか?また、downメソッドはupメソッドの前に実行されますか? upメソッドは、逆、create/update tables/indexesなどですか?C#コード - 最初の移行、上/下ですか?

時には私はこれを使用すると、ダウンメソッドは、ドロップされたテーブルをたくさん作成しますか?最近、多くのテーブルが作成されて落とされ、upメソッドではほとんど同じことが起こりました。どうして?

答えて

53

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

20

@Ladislav Mrnkaに追加するだけです。私は初めて()ダウンを使用するために必要なので、それを動作させるために私にいくつかの時間がかかった:

Update-Database -Target:201407242157114_46 

を私の最後の移行が(新しいものが追加されました)47であるところ。 Here's a nice explanationデータベースをロールバックして不正な移行を削除する方法について説明しています。

他のマジシャンの見習いに役立つことを期待してください:)

関連する問題