所以在上周我已经为我的MVC门户项目添加了几个迁移。
出现了一些意味着我不得不回滚特定的迁移。
我最近的迁移历史记录:
201506101200157_userPermissions
201508181440262_API1
201508201305341_ContactUpdate
201508241312425_ApiLog
201508271518402_ActivityLog
我需要否定的迁移是ContactUpdate
,我做了一些愚蠢的事情来实现这个目标。我回滚到API1
,而不是简单地进行更改并添加新的迁移,删除了ContactUpdate
迁移,然后重新更新回ActivityLog
。
这似乎工作正常,我的门户网站运行良好,我在这个项目中没有关于数据库的错误。但是当我运行add-migration时,up方法基本上是来自ContactUpdate
的down方法,即它仍然认为它需要恢复以适应我所做的更改。
ContactUpdate
迁移涉及向Contact表添加两个字段。总而言之,这是我采取的行动顺序:
所以很明显为什么EF认为它需要删除这两列,因为我在上次更新后删除了它们。
我参与此MVC项目的项目现在抛出错误
自创建数据库以来,支持上下文的模型已发生变化
我把它归结为EF的这个问题,相信我的数据库需要更新,尽管数据库和我的代码之间有完全的凝聚力。我该如何解决这个问题?
答案 0 :(得分:2)
您可以使用源代码管理来恢复迁移并正确执行吗?即在ActivityLog
撤消ContactUpdate
后添加新的迁移?
如果没有,您可以添加空白迁移。这将包括当前模型的快照,并将其存储在迁移历史记录表中。这样做可以使一切恢复正常。运行Add-Migration
并删除Up
和Down
方法的内容。
请注意,我确定您已经知道这一点,但为了将来遇到此答案的其他人的利益,我不建议将空白迁移作为常规工作流程,仅用于纠正错误。< / p>