Entiry Framework のCode FIrst で「Model compatibility〜」が発生した場合の対処方
環境
- SQL Server 2008 Express
- VIsual Studio 2010 Professional
- Entity Framework 4
- ASP.NET MVC 3
現象
Entiry Framwork で Code First で実装しようと、モデルを作成しモデルからscaffoldでコントローラーを作成。Initializerで初期データの投入をしようとしてました。要はこちらの記事の写経です。
第2回 Entity Frameworkコード・ファーストでモデル開発 − @IT
上記のエントリとは唯一異なる点は、事前にSQL Server 2008 Express にデータベースを作成した所です。
その結果、DBにアクセスする処理で以下の例外が発生しました。
Model compatibility cannot be checked because the database does not contain model metadata. Ensure that IncludeMetadataConvention has been added to the DbModelBuilder conventions.
検索すると同じ現象が発生している方がいました。
- asp.net mvc 3 - mvc3 code-first error on sqlexpress - Stack Overflow
- c# - SQL Server 2008: Ensure that IncludeMetadataConvention has been added to the DbModelBuilder conventions - Stack Overflow
- entity framework 4 - EF 4 Code First: Model compatibility cannot be checked because the EdmMetadata type was not included in the model - Stack Overflow
私の場合は、Code First 時事前に作成したデータベースを削除して、データベースがない状態でASP.NET MVC アプリケーションを起動したところ、データベースが作成されモデルに対応したエンティティも作成されました。
原因は幾つかあると思いますが、同一現象が発生した場合の参考にしてください。