关于entityframework migration的问题
今天在弄项目的时候碰到一个问题,我在领域实体加了字段,但是运行Add-Migration生成的文件里up和down内容都是空的。然后我不信邪运行了以下Update-Database,结果数据库并没有添加到我刚增加的字段。
这时候我关掉vs,重启,又尝试去增加了个字段,运行Add-Migration后,生成的文件就只有我现在加个这一个字段更新。
问题来了,上次遗漏的就补不回去了吗,我不想重删整个数据库取重建。
我不知道设计者是怎么设计这个Add-Migration的。我理解这个东西应该很好设计才对。
每次执行Add-Migration的时候去比对数据库的scheme和代码的entity,把差异的列出来就好。但是事实好像不是这样的。数据库还有个MigrationHistory记录的莫名的什么东西。
现在先要解决的问题的是这个遗漏的字段怎么修补上去?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
数据库中的MigrationHistory表就是用来记录每次进行数据迁移的记录。你要检查下你的这个表中数据是否手动删除了?在检查下vs中数据迁移的时候自动生成的文件是否存在。比如:“20170831XXX.cs”
粗暴一点:
数据库中的确有_MigrationHistory表记录迁移
我的猜测是:
比如你的迁移文件夹是这样的
Migration_v1.cs
Migration_v2.cs (添加了字段abc)
当你弄出了v2版本的迁移,并执行了迁移,此时数据库中的
_MigrationHistory
记录了你现在的版本(v2)但是你对v2不满意,手动删除了v2.cs,但是数据库中记录的版本还是(v2)
当你创建新的版本时
Migration_v3.cs (添加了字段efg)
迁移工具会先扫下数据库查看历史,最好只会生成添加字段efg的迁移