【问题标题】:The model backing the 'DMSContext' context has changed支持“DMSContext”上下文的模型已更改
【发布时间】:2013-03-30 18:40:30
【问题描述】:

我在运行我的 mvc 4 应用程序时收到以下错误。

支持“DMSContext”上下文的模型在创建数据库后发生了变化。考虑使用 Code First 迁移来更新数据库

我正在针对现有数据库运行我的应用程序,并且不想在每次模型更改时重新创建数据库。

我在谷歌上找到了很多答案,但没有一个有效。

具体来说,我尝试将以下内容添加到我的 global.asax:

Database.SetInitializer<DMSContext>(null);

Database.SetInitializer<DMSContext<Contact>>(null);

在上面,DMSContext就是DbContext。 Contact 是导致错误发生的更改的模型。

我还尝试将以下内容添加到我的上下文类中:

public DMSContext() : base()
          {
             Configuration.AutoDetectChangesEnabled = false;
          }

我所遵循的大部分方向都来自此页面,但没有运气。

The model backing the <Database> context has changed since the database was created

【问题讨论】:

    标签: asp.net-mvc entity-framework


    【解决方案1】:

    虽然你不使用迁移尝试创建一个,不要运行它,但你将能够看到与数据库的差异。

    【讨论】:

    • 非常有用,我忘了我在模型中添加了另一个字段——这准确地指出了我需要查看的位置。
    【解决方案2】:

    如果您使用Entity Framework Code First,建议您在应用程序中启用迁移。为此,see this link

    现在,每次您更改代码中的某些内容(主要是实体)时,只需在您的 Package Manager Console 中构建并运行 Update-Database -Force

    如果您还有其他问题,请告诉我。

    【讨论】:

    • 这行得通,但是为什么我需要运行更新数据库?这实际上会影响实时数据库吗?我绝对不想要它。我已经使用本指南启用了迁移 - msdn.microsoft.com/en-us/data/jj591621.aspx 但正在避免更新数据库部分。
    • @EthanPelton ef Code-First 在您的模型中稍作更改,需要您更新数据库。模型必须始终与您的数据库保持同步。 Update-Database -Force 使这成为可能。
    • @EthanPelton 是的,Model 的更改会影响您的Live Database 这就是 Code First 的美妙之处,您只需在一个地方进行更改,而很少需要接触数据库本身。
    • 灯泡刚亮。我试图手动更新数据库,但不明白为什么我需要运行更新。我根本不明白 EF 是为了维护数据库。感谢您的帮助。
    • @EthanPelton 很高兴为您提供帮助,您应该观看 Scott Allen 的视频,我从那里学到了很多东西。 pluralsight.com/training/Authors/Details/scott-allen
    【解决方案3】:

    检查继承 DbContext 的类的名称。它的名称必须与 Web.config 中的 connectionString 的名称相同

    <connectionStrings>
        <add name="TheSameNameAsYourDbContextClass" providerName="" connectionString="" />
      </connectionStrings>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-24
      • 1970-01-01
      • 2023-03-23
      • 2015-04-29
      • 2012-07-04
      • 1970-01-01
      • 1970-01-01
      • 2014-04-19
      相关资源
      最近更新 更多