'The model backing the 'XXXXXX' context has changed since the database was created. のエラーが出たとき


.NET MVCで簡単なアプリを作っているときに、題のようなエラーが生じたので、このエラーが起こった時の解決方法についてまとめた。

なお、今作っている簡易アプリはEntity Frameworkを使用しており、コードファーストでModelを作成している。

エラーの意味は、モデルの内容が変更されてしまっているので、マイグレーションをする必要があるというもの

このエラーは作成途中でモデルに変更を加えると起こるようだ。

解決方法

「Enable-Migrations」を叩く

そうすると

Migrations have already been enabled in project 'XXXXXXXXX'. To overwrite the existing migrations configuration, use the -Force parameter.

のメッセージが表示された。
すでにマイグレーションがある的なメッセージだろうか。

「Add-Migration AddStaffRequiredConstraint」を叩く

そうすると、

The Designer Code for this migration file includes a snapshot of your current Code First model. This snapshot is used to calculate the changes to your model when you scaffold the next migration. If you make additional changes to your model that you want to include in this migration, then you can re-scaffold it by running 'Add-Migration AddStaffRequiredConstraint' again.

というメッセージが表示された。
これでもうまくいってないっぽい。

「Update-Database」を叩く

そうすると、

Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Applying explicit migrations: [202107301524230_AddStaffRequiredConstraint].
Applying explicit migration: 202107301524230_AddStaffRequiredConstraint.
Running Seed method.

が表示された。
そうすると、Migrationsディレクトリにマイグレーションが作成されたので、成功したっぽい?

デバッグも動いて成功。

所感

Controllerの.csファイルなどで、元々作成したModelを継承して新しいモデルを作成作ったりすると今回のようなエラーが起こるんだそうだ。

ひとまず、継承なり、何なり、何かモデルをいじった場合は「Update-Database」を叩けば解決するのだろうか。

参考文献