Sql server 远程现有数据库的实体框架
我试图上传一个MVC项目,其中我首先使用EF4代码 我偶然发现一个问题,我只能通过管理控制台创建数据库,而EF严格要求创建数据库本身 如何使EF使用我为其创建的(已存在但为空)数据库?connectionstring是正确的,它可以连接,但我得到以下错误:Sql server 远程现有数据库的实体框架,sql-server,asp.net-mvc-3,entity-framework,Sql Server,Asp.net Mvc 3,Entity Framework,我试图上传一个MVC项目,其中我首先使用EF4代码 我偶然发现一个问题,我只能通过管理控制台创建数据库,而EF严格要求创建数据库本身 如何使EF使用我为其创建的(已存在但为空)数据库?connectionstring是正确的,它可以连接,但我得到以下错误: Model compatibility cannot be checked because the database does not contain model metadata. Model compatibility can only
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.
好的,我用NuGet实现了这样的工作:
PM> add-migration Initial
然后我更改了AutomaticMigrationsEnabled=false代码>在配置.cs
中。然后:
PM> Update-Database
它毫无怨言地完成了任务。然后我再次运行该应用程序,它成功了。好的,我使用NuGet让它像这样工作:
PM> add-migration Initial
然后我更改了AutomaticMigrationsEnabled=false代码>在配置.cs
中。然后:
PM> Update-Database
它毫无怨言地完成了任务。然后我再次运行了应用程序,它成功了。当您将DropCreateDatabaseIfModelChanges作为初始值设定项时,EF检查模型是否有更改的方法是查看保存在数据库中的模型元数据,并查看是否有任何更改。由于先前创建的数据库中没有这样的元数据(因为它是在没有EF的情况下创建的),所以它没有任何可与之比较的内容,因此会给您带来该错误
为了避免这个问题(并且不必使用控制台),请使用不同的初始值设定项,例如EF 4.3的MigrateDatabaseToLatestVersion。我在我的项目中使用了一个现有的数据库,它工作得很好。当您使用DropCreateDatabaseIfModelChanges作为初始值设定项时,EF检查模型是否有更改的方法是查看保存在数据库中的模型元数据,并查看是否有任何更改。由于先前创建的数据库中没有这样的元数据(因为它是在没有EF的情况下创建的),所以它没有任何可与之比较的内容,因此会给您带来该错误
为了避免这个问题(并且不必使用控制台),请使用不同的初始值设定项,例如EF 4.3的MigrateDatabaseToLatestVersion。我在我的项目中使用了一个现有的数据库,它工作得很好。您在代码中使用了哪个数据库初始值设定项?它只需要在某些情况下创建数据库。我使用的是自动迁移。不,我的意思是您使用的是DropCreateDatabaseIfModelChanges、DropCreateDatabaseAlways、MigratedDatabaseTolatesVersion,等等?我让DropCreateDatabaseIfModelChanges处于活动状态。关于如何在将来避免此问题,请参见下面的答案。您在代码中使用了哪个数据库初始值设定项?它只需要在某些情况下创建数据库。我使用的是自动迁移。不,我的意思是您使用的是DropCreateDatabaseIfModelChanges、DropCreateDatabaseAlways、MigratedDatabaseToLateStVersion等吗?我的DropCreateDatabaseIfModelChanges处于活动状态。有关如何在将来避免此问题,请参阅下面的答案。