ソース管理でブランチを変更した後、Update-Database を実行して以前の移行にロールバックすると、EF は次のように「Reverting automatic migration」というテキストを表示することがあります。
Reverting automatic migration: 201305171619008_DescriptiveNameForMigration.
Reverting code-based migration: 201305162023299_Init.
Entity Framework は、移行を自動化する必要があるとどのように判断したのですか? また、何が違うのでしょうか?
コード ファーストの移行が既にセットアップされているプロジェクトがあると仮定して、これを再現する方法は次のとおりです。
- ソース管理で新しいブランチに切り替える
- モデル、マッパーに変更を加え、移行を追加する
- データベースを更新する
- デフォルトのブランチに戻す
- 更新データベース -TargetMigration:0 -強制
- Update-Database コマンドの結果の「自動移行の取り消し」を参照してください
これは私が考えていることです。間違っている場合は修正してください。
- Update-Database は、__MigrationHistory で移行を列挙します
- プロジェクト内の対応する移行ファイルを見つけて、Down() メソッドを呼び出します。
- 対応する移行ファイルが存在しない場合は、__MigrationHistory のスナップショットに基づいて、移行をロールバックする方法について最善の推測を実行します。