【T7a】データモデルの変更とマイグレーションの設計(6/7)
プロジェクトタイプ | (注意: 本文参照) |
---|---|
プロジェクト名 | T7a |
ソリューション名 | PIT7 |
注意
- 本ページの作業内容は 前のページまでの続き になっていることに注意せよ.
- 先に前のページまでをすべて読み,指示されている作業を済ませてから本ページを読むこと.
- プロジェクトの作成作業については準備作業を参照せよ.
7a-6. マイグレーション処理の削除
次にマイグレーション処理の削除を試みてみよう.
マイグレーション処理を削除するには dotnet ef migrations remove
コマンドを使用する.このコマンドは 直前に生成した マイグレーションコードを削除する.
注意するべきは,すでにデータベースにそのマイグレーション処理を適用済み(≒「dotnet ef database update
」を実行済み)である場合は,
このコマンドを実行する前に データベース側を,削除しようとしているマイグレーション処理を適用前の定義に差し戻しておく 必要があることである.
現状ではChangeMiddleName
がすでに適用済みの状態であるため,このコマンドを実行するとデータベースに適用済みのマイグレーションコードを,適用を取り消さずに削除しようとしていることになり,エラーとなる.
このことを確認しておこう.コマンドラインターミナル 1 で_に示すコマンドを実行してみよう.
PS>
dotnet ef migrations remove
すると,_に示すようなエラーメッセージが表示されるはずである.
エラーメッセージを抜粋すると以下のようなメッセージとなっているはずである.
The migration '20240305051059_ChangeMiddleName' has already been applied to the database.
Revert it and try again. If the migration has been applied to other databases,
consider reverting its changes using a new migration instead.
このエラーメッセージを訳すならば以下のようになるだろう.
マイグレーションマイグレーション名
は既にデータベースに適用済みです.
それを取り消してからもう一度試してください.このマイグレーションがほかのデータベースにも適用済みである場合は,
新しいマイグレーションを使ってその変更を打ち消すことを検討してください.
指摘されているように,マイグレーションChangeMiddleName
を削除するには,データベース側に既に適用されているChangeMiddleName
の処理を取り消して,その直前のデータベース定義に差し戻す必要がある.
このデータベース定義の差し戻しには前節で説明した通り dotnet ef database update
コマンドを使用すればよい.
今回の場合,このChangeMiddleName
の直前のマイグレーション処理はAddMiddleName
である.
この時点までデータベース定義を差し戻すために,コマンドラインターミナル 1 で_に示すコマンドを実行しよう.
PS>
dotnet ef database update AddMiddleNamePS>
dotnet ef migrations remove
_によって, Migrations フォルダの .cs ファイルも削除される(_,_). pgAdmin で Students テーブルの全内容を確認しておこう(_).
また_に示すようにStudent
クラスの定義も元に戻しておこう.
|
|