这令我感到沮丧,我已经多次在这里提出问题/答案,我似乎错过了一些非常基本的东西。我正在使用EF 6与MVC 5和SQL Server。我理解并且目前正在关注的过程是:
它在本地工作,但是当我部署到Azure时,我一直得到:
“自创建数据库以来,支持' {contextname} '的上下文已发生变化。请考虑使用Code First Migrations更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。
如果删除数据库,删除所有迁移并创建新的“初始”迁移,它会重新创建空数据库并且我的软件可以正常工作。但我不想丢失我的所有数据,我认为这是EF迁移的重点。
那么我做错了什么?
作为旁注,在我最近的尝试中,我手动修改了azure数据库以匹配本地数据库,我仍然得到上述错误。
答案 0 :(得分:1)
是否可以运行指向Azure DB而不是本地的update-database命令。这个错误吗?
您可以手动更改Azure数据库,但__MigrationHistory表必须与本地数据库同步。我有时会做的是将更改应用于本地数据库,然后转到Azure,更改模拟这些更改,然后清除Azure Db __MigrationHistory表中的行,并在应用迁移后复制本地__MigrationHistory表中的所有行。
这是实体框架(EF)检查以查看是否已应用迁移 - 将检查行数是否匹配。
另请注意,将迁移应用于Azure中包含大量数据的表时,通常会超时,因此您最终会手动执行此操作。