EF Code First Migrations无法使用Azure

时间:2016-02-24 02:18:55

标签: .net entity-framework azure ef-migrations

这令我感到沮丧,我已经多次在这里提出问题/答案,我似乎错过了一些非常基本的东西。我正在使用EF 6与MVC 5和SQL Server。我理解并且目前正在关注的过程是:

  1. 创建模型和初始迁移。
  2. 运行Update-Database(本地)
  3. 部署到Azure,选中“执行迁移”复选框。
  4. 修改模型
  5. 创建迁移
  6. 更新 - 数据库(本地)
  7. 部署到Azure,选中“执行迁移”复选框。
  8. 它在本地工作,但是当我部署到Azure时,我一直得到:

      

    “自创建数据库以来,支持' {contextname} '的上下文已发生变化。请考虑使用Code First Migrations更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。

    如果删除数据库,删除所有迁移并创建新的“初始”迁移,它会重新创建空数据库并且我的软件可以正常工作。但我不想丢失我的所有数据,我认为这是EF迁移的重点。

    那么我做错了什么?

    作为旁注,在我最近的尝试中,我手动修改了azure数据库以匹配本地数据库,我仍然得到上述错误。

1 个答案:

答案 0 :(得分:1)

是否可以运行指向Azure DB而不是本地的update-database命令。这个错误吗?

您可以手动更改Azure数据库,但__MigrationHistory表必须与本地数据库同步。我有时会做的是将更改应用于本地数据库,然后转到Azure,更改模拟这些更改,然后清除Azure Db __MigrationHistory表中的行,并在应用迁移后复制本地__MigrationHistory表中的所有行。

这是实体框架(EF)检查以查看是否已应用迁移 - 将检查行数是否匹配。

另请注意,将迁移应用于Azure中包含大量数据的表时,通常会超时,因此您最终会手动执行此操作。