远程现有数据库上的实体框架

时间:2012-09-24 13:18:57

标签: sql-server asp.net-mvc-3 entity-framework

我正在尝试上传我使用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.

2 个答案:

答案 0 :(得分:1)

当您将DropCreateDatabaseIfModelChanges作为初始化程序时,EF检查模型是否有更改的方式是查看保存在数据库中的模型元数据,并查看是否有任何更改。由于之前创建的数据库中没有此类元数据(因为它是在没有EF的情况下创建的),因此没有任何内容可以与之进行比较,因此会给您带来错误。

要避免此问题(无需使用控制台),请使用其他初始化程序,例如EF 4.3的MigrateDatabaseToLatestVersion。我使用现有的数据库为我的项目做了这件事,它工作得很好。

答案 1 :(得分:0)

好吧,我使用NuGet让它像这样工作:

PM> add-migration Initial

然后我更改了AutomaticMigrationsEnabled = false;中的Configuration.cs。然后:

PM> Update-Database

它毫无怨言地完成了工作。然后我再次运行应用程序,它运行了。