「あ、制約つけ忘れた」
「やっぱカラム追加したほうがいいなぁ」
テーブル作成前に戻したいなってこと、ありますよね。
これまで ASP.NET を使った経験がなく、職場の先輩に教えてもらったので、メモとして残しておきます。
マイグレーションとは?
データベースを削除してから作り直すと,DBに保存されている情報が全て削除されてしまいます. こういった事態を回避する方法として、データベースマイグレーションを行う方法があります。 マイグレーションとは、DBに保存されているデータを保持したまま、テーブルの作成やカラムの変更などを行うための機能です。
densanlabsから引用
手順
データベースの状態を、指定したマイグレーションまで戻したいときの手順は以下のとおりです。
戻したいマイグレーションファイルを確認する
Update-Databaseを実行する
remove-migrationを実行する
add-migrationを実行する
update-databaseを実行する
それでは順番に確認していきましょう。
戻したいマイグレーションファイルを確認する
まずは戻したいマイグレーションファイルを確認しましょう。
例
20220303115938_User.cs
20220304115938_Wallet.cs
20220305115938_Item.cs
このようにマイグレーションファイルがあるとして、20220305115938_Item.csを削除したいとします。
Update-Databaseを実行する
戻したいマイグレーションファイルを確認したら、次はコマンドを実行していきます。
[ツール] メニューで、[NuGet パッケージ マネージャー] > [パッケージ マネージャー コンソール] の順に選択します。
これからコマンドを実行するわけですが、注意点があります。
20220305115938_Item.csを削除したい場合、20220304115938_Wallet.csをUpdate-Databaseで指定することです。
つまり、削除したいマイグレーションファイル(20220305115938_Item.cs)の一つ前を指定して、Update-Databaseを実行します。
コンソールで下記のようにコマンドを実行してください。
PM> Update-Database 20220304115938_Wallet
Build started...
Build succeeded.
Done.
これでデータベースは20220304115938_Wallet.csまで戻りました。
(この時点ではマイグレーションファイルは削除されていません。)
remove-migrationを実行する
不要になったマイグレーションファイルを削除していきます。
下記のコマンドを実行してください。
PM> remove-migration
Build started...
Build succeeded.
Removing migration '20220305115938_Item'.
Reverting the model snapshot.
Done.
これでマイグレーションが削除されます。
ちなみに、エディタから直接ファイルを消すと、もう一度テーブルを作成するときにエラーが発生します。
remove-migrationコマンドで削除するようにしましょう。
削除だけの場合、ここまでで終了です。
update-databaseを実行して、更新を反映させておきましょう。
add-migrationを実行する
設定を見直したり、追加したらもう一度テーブルを作成します。
PM> add-migration Item
Build started...
Build succeeded.
To undo this action, use Remove-Migration.
update-databaseを実行する
最後にupdate-databaseを実行して、更新を反映させます。
PM> update-database
Build started...
Build succeeded.
Done.
これで完了です。
まとめ
テーブル操作は慎重になりますよね。
最初はビビりながらも、たくさん経験していくことで慣れてくると思います。
地味にハマったので、記事にしました。
少しでも参考になれば幸いです。
参考資料
チュートリアル: ASP.NET MVC アプリで EF の移行を使用して Azure にデプロイする
Entity Framework Core ツールのリファレンス - Visual Studio のパッケージ マネージャー コンソール
↧