shuhelohelo’s blog

Xamarin.Forms多めです.

DBの状態を、指定したマイグレーション適用時点まで戻す

DBの状態を、指定したマイグレーション適用時点まで戻したい場合がある。

まずはそのマイグレーションIDを調べる。

マイグレーションファイルはソリューションエクスプローラMigrationsフォルダ内に存在存在する。

f:id:shuhelohelo:20190813105704p:plain

このマイグレーションファイルの名前がマイグレーションId。この例だと20190813015415_Initial

現在、初回マイグレーションした後にEmployeeテーブルにAgeカラムを追加した状態。

VSのSQL Server Object Explorerで見てみるとテーブルは以下のとおりAgeカラムが追加されている。

f:id:shuhelohelo:20190813110504p:plain

このAgeカラムの追加を取り消したい。 DBの状態を指定したマイグレーション適用時点まで戻すには、Update-Database マイグレーションIdを実行する。

今回はAgeカラムを追加するマイグレーションをDBに適用する前の状態に戻したいので、パッケージマネージャコンソールでUpdate-Database 20190813015415_Initialと実行する。

PM> Update-Database 20190813015415_Initial
Reverting migration '20190813015516_AddAgeColumn'.
Done.

これでDBがAgeカラムを追加する前の状態に戻っている。

f:id:shuhelohelo:20190813111131p:plain

Ageカラムを追加するマイグレーションファイルは不要になったのでRemove-Migrationコマンドで削除する。

PM> Remove-Migration
Removing migration '20190813015516_AddAgeColumn'.
Reverting model snapshot.
Done.

初回(DB生成)のマイグレーションをなかったことにしたい

初回のマイグレーションの結果をやり直したいのであれば、DBを削除すればいい。

DBを削除する場合は、VSのパッケージマネージャコンソールでDrop-Databaseを実行する。

PM> drop-database
Confirm
Are you sure you want to perform this action?
Performing the operation "Drop-Database" on target "database 'hellocoredb' on server '(localdb)\MSSQLLocalDB'".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):y
Dropping database 'hellocoredb'.
Successfully dropped database 'hellocoredb'.

そしてRemove-Migrationを実行する。