从Visual Studio发布时未更新dbo .__ MigrationHistory表

时间:2019-01-01 16:28:26

标签: visual-studio entity-framework azure entity-framework-6

我遇到了dbo .__ MigrationHistory表未通过新数据库迁移进行更新的问题,但是实际的数据库本身已通过相关更改正确地进行了更新。这意味着该站点由于发现上下文中的更改而无法加载-我必须手动将新更改插入dbo .__ MigrationHistory表以使其加载。

当我从Visual Studio发布到Azure时,在我的PRODUCTION网站中一切正常。但是,我仅在我的TEST网站(发布配置文件不同)上遇到了这个问题。

我已经在TEST和PRODUCTION发布配置文件上的发布配置文件中选中了EXECUTE CODE FIRST MIGRATIONS框。确实,除了推送到其他站点之外,两个发布配置文件似乎都是相同的。

以防万一-每当发生这种情况时,我的localdb SqlServer数据库在发布期间也将变为未连接。因此,在本地PC上,我必须返回并在SQL Server Management Studio中重新附加.mdf数据库文件。

您可以提供的任何帮助/建议都很棒。

1 个答案:

答案 0 :(得分:0)

在很多情况下,Entity Framework迁移使迁移状态处于无法使用的状态。通常,这是在来自不同开发人员的大量迁移应用之后发生的,并且陷入了我们无法通过新迁移来更新数据库或回滚的地方。

从当前架构中删除迁移并以干净状态开始更简单。

如果您选择重置迁移的路线,请确保您备份了代码并为数据库做好了良好的备份。

总而言之,执行此操作的步骤是:

  1. 从数据库中删除_MigrationHistory表
  2. 删除项目的“迁移”文件夹中的单个迁移文件
  3. 在Package Manager控制台中启用迁移
  4. 程序包管理器控制台中的添加迁移初始
  5. 在初始迁移中注释掉Up方法内部的代码
  6. 程序包管理器控制台中的更新数据库(不执行任何操作,但创建迁移条目)
  7. 在初始方法中删除评论

这不是理想的解决方法,但是可以解决您的问题。

P.S。-通常是当有人从本地计算机更新数据库并且它不同步时发生。