1

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

2 回答 2

1

当您将 DropCreateDatabaseIfModelChanges 作为初始化程序时,EF 检查模型是否有更改的方式是查看保存在数据库中的模型元数据并查看是否有任何更改。由于之前创建的数据库中没有这样的元数据(因为它是在没有 EF 的情况下创建的),所以它没有可比较的东西,因此给了你这个错误。

为避免继续出现此问题(并且不必使用控制台),请使用不同的初始化程序,例如 EF 4.3 的 MigrateDatabaseToLatestVersion。我用我的项目的现有数据库做到了这一点,它工作得很好。

于 2012-09-24T15:12:32.690 回答
0

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

PM> add-migration Initial

然后我AutomaticMigrationsEnabled = false;Configuration.cs. 然后:

PM> Update-Database

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

于 2012-09-24T13:27:53.590 回答