おーみんブログ

C#, ASP.NET Core, Unityが大好きです。

EntityFramework Coreでデータベースを特定のバージョンに更新する。

はじめに

EntityFrameworkにはC#のクラスからデータベースを作成・更新できるマイグレーション機能があります。 今回はその中でも特定のバージョンへデータベースを更新するマイグレーション機能について記載していこうと思います。

使用するコマンド

使用するコマンドは以下のUpdate-Databaseコマンドです。

docs.microsoft.com

引数に何もセットせずに実行すると最新のバージョンのデータベースに更新されますが移行先の名前もしくはIDを指定すると特定のバージョンへデータベースを更新することが可能です。

実際に利用してみた

今回のサンプル例は以下です。 sampleMigration.png

  • 20210829112951_Initial.cs インデックスを付けていない状態

  • 20210830133632_Second.cs インデックスを付け、名前を「IX_Person_Name」としている

  • 20210830141151_Third.cs インデックスを付け、名前を「Index-Name」としている

利用開始時のデータベースは「20210830141151_Third.cs」の状態です。 migrationbefore.png

移行先のIDを指定してデータベースを更新する

Update-Database 20210830133632_Second

下記のようにインデックスの名前が「IX_Person_Name」と変わっているため、データベースが更新されたことが分かります。 migrationafter.png

移行先の名前を指定してデータベースを更新する

Update-Database Initial

下記のようにインデックスがなくなっているため、データベースが更新されたことが分かります。

migrationafter2.png

おわりに

何となく利用していたEFCoreのマイグレーション機能ですが、ちゃんとドキュメントを見るとほかにも多数のコマンドがあって楽しいですね! これを機に他のコマンドも触ってみよう~~!