Sco*_*ich 20 entity-framework asp.net-mvc-3 ef-migrations
我使用Entity Framework Code First开始了我的项目.当我准备好时,我将我的数据库和代码上传到我的主机提供商.一切正常.
我需要在我的一个类中添加一个新字段,我不想丢失数据库中的数据.因此,我尝试了一些关于使用Code First Migrations的博客文章.我做了以下事情:
当我访问该网站时,我收到以下错误消息:自创建数据库以来,支持'blahblah'上下文的模型已更改.考虑使用Code First Migrations来更新数据库.
我究竟做错了什么?
NSG*_*aga 25
根据我的经验,这表明迁移表不同步(即使你的数据不是),而且现在已经成为db模式的一部分(从4.3开始我认为 - 在系统表下).
可能有很多原因和方法来体验这种错误,但大部分时间......
有问题的部分是手动支持/恢复整个数据库与代码更改的一些组合 - 我不完全确定为什么总是如此.
简而言之,即使Db-s是相同的迁移表,数据也可能不是 - 并且哈希比较可能会失败(仍然完全恢复听起来不够好 - 但你有'双方').
对我有用的是使用
Update-Database -Script
这会创建一个具有"迁移差异"的脚本,
您可以将其作为SQL脚本手动应用于目标服务器数据库(并且应该插入正确的迁移表行等).
如果仍然不起作用 - 你仍然可以做两件事......
删除迁移表(目标 - 在系统表下) - 根据http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-automatic-migrations-walkthrough.aspx评论在那里 - 这应该回到以前的行为,如果你确定你的Db-s是相同的 - 它只是'信任你',
作为最后的手段我使用 - 制作一个Update-Database -Script
完整的模式(例如,通过初始化一个空的数据库,它应该强制执行'完整的脚本'),
查找INSERT INTO [__MigrationHistory]
记录,
只需运行它们,将它们插入数据库,
并确保您的数据库 - 和代码匹配,
应该让事情再次同步.
(免责声明:这不是一个可以随时工作的防弹,你可能需要根据当地情况尝试一些事情 - 但应该让你同步)
归档时间: |
|
查看次数: |
30661 次 |
最近记录: |