为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

侃侃无极 2019-12-26 10:49:17
我使用实体框架4和CTP4创建了一个“仅代码” POCO以用于现有数据库。运行查询时出现错误自创建数据库以来,支持“ xyzContext”上下文的模型已更改。手动删除/更新数据库,或使用IDatabaseInitializer实例调用Database.SetInitializer。例如,RecreateDatabaseIfModelChanges策略将自动删除并重新创建数据库,并选择添加新数据作为种子。我不清楚为什么会发生这种情况或我可以更改什么。我只是创建了POCO,定义了一个简单的DbContext,进行了一些调整,然后尝试运行一个简单的查询。由于我使用的是“仅代码”,因此我不知道需要进行的任何配置设置。而且我当然不想重新创建或删除数据库,因为它是现有数据库。感谢您的任何想法。
查看完整描述

3 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

这是CTP4中的一个错误,用于将EF与现有数据库一起使用。


您可以通过以下方式解决此问题:


Database.SetInitializer<YourContext>(null);

在Global.asax的Application_Start方法中


查看完整回答
反对 回复 2019-12-26
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

我在上面发表了评论,并且在我刚刚熟悉EF5来熟悉它的工作原理时它就起作用了。现在,我正在编写“实际”代码,由于我已经决定使用MEF实例化任何DbContext并将所有配置依赖项注入为可组合部分,因此我不再在代码中为每个上下文设置数据库初始化程序。


因此,我再次立即遇到上述错误,但是这次我选择使用如下配置文件条目来解决它。


<entityFramework>

    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">

      <parameters>

        <parameter value="v11.0" />

      </parameters>

    </defaultConnectionFactory>

    <contexts>

      <context type="Basd.Erp.ContactContext, Basd.Erp" disableDatabaseInitialization="true"></context>

    </contexts>

  </entityFramework>

因此,通过在EntityFramework的配置文件部分中设置disableDatabaseInitialization =“ true”,您可以克服上述错误,并且由于它不在代码中,因此好处之一是能够“更轻松地”使用抽象的构建器/工厂创建上下文。


查看完整回答
反对 回复 2019-12-26
  • 3 回答
  • 0 关注
  • 619 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信