56

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

これを使用すると、downメソッドが大量のcreateテーブルを取得し、それがドロップされることがありますか?最近、多くのテーブルを作成して削除しましたが、upメソッドでもほぼ同じことが起こりました。なんで?

4

3 に答える 3

95

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

于 2012-03-19T11:54:18.223 に答える
31

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

Update-Database -Target:201407242157114_46

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

それが他の魔術師の見習いに役立つことを願っています:)

于 2014-07-26T16:38:28.880 に答える
2

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

于 2019-04-23T10:36:04.270 に答える