我使用实体框架代码第一次开始了我的项目。 当我准备好了我上传我的数据库和代码到我的主机提供商。 一切工作。
我需要一个新的字段添加到我的课之一,我不想失去在数据库中的数据。 因此,我尝试以下有关使用的Code First迁移一些博客文章。 我做了以下内容:
- 我支持我的遥控器(生产)数据库。
- 我在本地连接这个数据库
- 我加了属性,以我的课
- PM>启用的迁移
- PM>添加迁移AddSortOrderToCar
- PM>更新,数据库
- 在这一点上,我创建的本地数据库的.bak文件,然后使用该文件为“恢复”到远程之一。
- 最后,我发表的代码到远程站点。
当我访问该网站,我得到了以下错误消息:自数据库创建的模型支持的“blahblah”已经时过境迁。 考虑使用的Code First迁移来更新数据库。
我究竟做错了什么?
从我的经验表明,迁移表不同步(即使你的数据不是),而这一直是数据库架构的一部分,现在(因为4.3我认为 - 在系统表)。
可能有很多的原因和途径,体验错误,但大部分的时间...
有问题的部分是手动备份/还原整个数据库一起更改代码的某些组合 - 我不是,为什么总是完全肯定。
总之,即使DB-可相同迁移表的数据可能不是 - 和散列比较可能会失败(仍完全恢复一样不够好声音 - 但你必须“双方”)。
什么工作对我来说是使用
Update-Database -Script
这将创建一个脚本以“迁移差异”,
您可以手动应用为目标服务器数据库的SQL脚本(你应该得到正确的迁移表行插入等)。
如果仍然不行 - 你仍然可以做两件事情...
除去迁移表(目标-下系统表) -按照http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-automatic-migrations-walkthrough.aspx评论在那里 - 应该故障回复到以前的行为,如果你确信你的数据库-S是相同的 - 它只是要“相信你”,
作为最后的手段我用-做一个Update-Database -Script
完整架构的(例如,通过初始化一个空分贝,应强制“全剧本”),
找到INSERT INTO [__MigrationHistory]
记录,
只要运行那些,它们插入到数据库中,
并确保你的数据库 - 和代码匹配,
应该让事情保持同步再次运行。
(免责声明:这不是防弹在任何时候都工作,您可能需要尝试给当地的情景几件事情 - 但应该让你同步)
我认为,在第6步,你需要运行更新,数据库-Verbose
另外这个链接是在EF与脚手架更新数据库非常有帮助http://www.asp.net/mvc/overview/older-versions/hands-on-labs/aspnet-mvc-4-entity-framework-scaffolding-and -migrations
文章来源: MVC3 and Code First Migrations - “model backing the 'blah' context has changed since the database was created”