我正在尝试上传我使用EF 4 Code First的MVC项目。
我偶然发现了我只能通过管理控制台创建数据库的问题,而EF严格要求自己创建数据库。
如何让EF使用我为其创建的(已存在但空的)数据库?连接字符串是正确的,它可以连接,但我收到此错误:
Model compatibility cannot be checked because the database does not contain
model metadata. Model compatibility can only be checked for databases created
using Code First or Code First Migrations.
答案 0 :(得分:1)
当您将DropCreateDatabaseIfModelChanges作为初始化程序时,EF检查模型是否有更改的方式是查看保存在数据库中的模型元数据,并查看是否有任何更改。由于之前创建的数据库中没有此类元数据(因为它是在没有EF的情况下创建的),因此没有任何内容可以与之进行比较,因此会给您带来错误。
要避免此问题(无需使用控制台),请使用其他初始化程序,例如EF 4.3的MigrateDatabaseToLatestVersion。我使用现有的数据库为我的项目做了这件事,它工作得很好。
答案 1 :(得分:0)
好吧,我使用NuGet让它像这样工作:
PM> add-migration Initial
然后我更改了AutomaticMigrationsEnabled = false;
中的Configuration.cs
。然后:
PM> Update-Database
它毫无怨言地完成了工作。然后我再次运行应用程序,它运行了。