【问题标题】:The model backing the 'ServicesContext' context has changed since the database was created [duplicate]自创建数据库以来,支持“ServicesContext”上下文的模型已更改[重复]
【发布时间】:2017-12-11 11:40:55
【问题描述】:

我意识到 Stack Overflow 上已经有很多关于此的问题,但我相信这略有不同。

我在 4 个不同的服务器上设置了 4 个数据库,这些服务器复制了 4 个不同的环境。沙盒、测试、用户验收测试和现场测试。这 4 种环境具有大致相同的架构支持它们,但是每个环境之间存在一些差异(主要是沙盒和其他环境之间,因为这在测试时最常更改)。

我需要能够从一个 Web 应用程序使用 Entity Framework 访问所有 4 个环境。目前,当使用它访问 Test、UAT 和 Live 时,这一切都可以完美运行。不幸的是,当涉及到沙盒时,我收到以下错误:

System.InvalidOperationException: '支持 'ServicesContext' 上下文的模型自数据库创建以来已更改。

我知道我收到此错误是因为数据库与预期的不同,但我希望有办法让 EF 忽略这些更改,因为我试图访问的唯一部分是一样。

到目前为止,我想到的唯一选择是通过 EF 单独导入每个数据库,但我不想这样做,因为这意味着我基本上必须为每个环境复制代码(至少,据我所知,这是我必须做的?)

就我个人而言,不允许更改系统结构或数据库模式,所以很遗憾,这不是一个选项。

任何帮助将不胜感激。

【问题讨论】:

  • 我相信你可以在启动时调用Database.SetInitializer<ServicesContext>(null);来防止错误被抛出。
  • 这似乎成功了。谢谢!

标签: c# sql-server entity-framework


【解决方案1】:

正如 stuartd 在 cmets 中提到的,执行以下操作可以解决问题:

Database.SetInitializer<ServicesContext>(null);

我将它放在我的 EF Context 类的构造函数中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-14
    • 2014-04-19
    • 2011-04-05
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    相关资源
    最近更新 更多