仅限实体框架代码错误:自创建数据库以来,支持上下文的模型已更改

我使用实体框架4和CTP4创建了一个“仅代码” POCO以用于现有数据库。运行查询时出现错误


自创建数据库以来,支持“ xyzContext”上下文的模型已更改。手动删除/更新数据库,或使用IDatabaseInitializer实例调用Database.SetInitializer。例如,RecreateDatabaseIfModelChanges策略将自动删除并重新创建数据库,并选择添加新数据作为种子。


我不清楚为什么会发生这种情况或我可以更改什么。我只是创建了POCO,定义了一个简单的DbContext,进行了一些调整,然后尝试运行一个简单的查询。由于我使用的是“仅代码”,因此我不知道需要进行的任何配置设置。而且我当然不想重新创建或删除数据库,因为它是现有数据库。


感谢您的任何想法。


侃侃无极
浏览 575回答 3
3回答

慕村9548890

这是CTP4中的一个错误,用于将EF与现有数据库一起使用。您可以通过以下方式解决此问题:Database.SetInitializer<YourContext>(null);在Global.asax的Application_Start方法中

守着星空守着你

我在上面发表了评论,并且在我刚刚熟悉EF5来熟悉它的工作原理时它就起作用了。现在,我正在编写“实际”代码,由于我已经决定使用MEF实例化任何DbContext并将所有配置依赖项注入为可组合部分,因此我不再在代码中为每个上下文设置数据库初始化程序。因此,我再次立即遇到上述错误,但是这次我选择使用如下配置文件条目来解决它。<entityFramework>&nbsp; &nbsp; <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">&nbsp; &nbsp; &nbsp; <parameters>&nbsp; &nbsp; &nbsp; &nbsp; <parameter value="v11.0" />&nbsp; &nbsp; &nbsp; </parameters>&nbsp; &nbsp; </defaultConnectionFactory>&nbsp; &nbsp; <contexts>&nbsp; &nbsp; &nbsp; <context type="Basd.Erp.ContactContext, Basd.Erp" disableDatabaseInitialization="true"></context>&nbsp; &nbsp; </contexts>&nbsp; </entityFramework>因此,通过在EntityFramework的配置文件部分中设置disableDatabaseInitialization =“ true”,您可以克服上述错误,并且由于它不在代码中,因此好处之一是能够“更轻松地”使用抽象的构建器/工厂创建上下文。
打开App,查看更多内容
随时随地看视频慕课网APP