5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

データベースの状態を指定したマイグレーションまで戻したいときの手順

Last updated at Posted at 2022-03-05

「あ、制約つけ忘れた」
「やっぱカラム追加したほうがいいなぁ」

テーブル作成前に戻したいなってこと、ありますよね。
これまで ASP.NET を使った経験がなく、職場の先輩に教えてもらったので、メモとして残しておきます。

マイグレーションとは?

データベースを削除してから作り直すと,DBに保存されている情報が全て削除されてしまいます. こういった事態を回避する方法として、データベースマイグレーションを行う方法があります。 マイグレーションとは、DBに保存されているデータを保持したまま、テーブルの作成やカラムの変更などを行うための機能です。

densanlabsから引用

手順

データベースの状態を、指定したマイグレーションまで戻したいときの手順は以下のとおりです。

  1. 戻したいマイグレーションファイルを確認する
  2. Update-Databaseを実行する
  3. remove-migrationを実行する
  4. add-migrationを実行する
  5. update-databaseを実行する

それでは順番に確認していきましょう。

戻したいマイグレーションファイルを確認する

まずは戻したいマイグレーションファイルを確認しましょう。

20220303115938_User.cs
20220304115938_Wallet.cs
20220305115938_Item.cs

このようにマイグレーションファイルがあるとして、20220305115938_Item.csを削除したいとします。

Update-Databaseを実行する

戻したいマイグレーションファイルを確認したら、次はコマンドを実行していきます。
[ツール] メニューで、[NuGet パッケージ マネージャー] > [パッケージ マネージャー コンソール] の順に選択します。

これからコマンドを実行するわけですが、注意点があります。
20220305115938_Item.csを削除したい場合、20220304115938_Wallet.csUpdate-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 のパッケージ マネージャー コンソール

5
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?