迁移问题 - EF认为数据库需要更新,引用它的项目将无法运行

时间:2015-09-04 10:55:36

标签: c# asp.net-mvc entity-framework

所以在上周我已经为我的MVC门户项目添加了几个迁移。

出现了一些意味着我不得不回滚特定的迁移。

我最近的迁移历史记录:

201506101200157_userPermissions
201508181440262_API1
201508201305341_ContactUpdate
201508241312425_ApiLog
201508271518402_ActivityLog

我需要否定的迁移是ContactUpdate,我做了一些愚蠢的事情来实现这个目标。我回滚到API1,而不是简单地进行更改并添加新的迁移,删除了ContactUpdate迁移,然后重新更新回ActivityLog

这似乎工作正常,我的门户网站运行良好,我在这个项目中没有关于数据库的错误。但是当我运行add-migration时,up方法基本上是来自ContactUpdate的down方法,即它仍然认为它需要恢复以适应我所做的更改。

ContactUpdate迁移涉及向Contact表添加两个字段。总而言之,这是我采取的行动顺序:

  • 回滚到API1
  • 删除ContactUpdate迁移
  • 更新 - 数据库到最新迁移
  • 从Contact class
  • 中删除两个字段

所以很明显为什么EF认为它需要删除这两列,因为我在上次更新后删除了它们。

我参与此MVC项目的项目现在抛出错误

  

自创建数据库以来,支持上下文的模型已发生变化

我把它归结为EF的这个问题,相信我的数据库需要更新,尽管数据库和我的代码之间有完全的凝聚力。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

您可以使用源代码管理来恢复迁移并正确执行吗?即在ActivityLog撤消ContactUpdate后添加新的迁移?

如果没有,您可以添加空白迁移。这将包括当前模型的快照,并将其存储在迁移历史记录表中。这样做可以使一切恢复正常。运行Add-Migration并删除UpDown方法的内容。

请注意,我确定您已经知道这一点,但为了将来遇到此答案的其他人的利益,我不建议将空白迁移作为常规工作流程,仅用于纠正错误。< / p>