关于entityframework migration的问题

发布于 2022-09-06 00:15:25 字数 439 浏览 10 评论 0

今天在弄项目的时候碰到一个问题,我在领域实体加了字段,但是运行Add-Migration生成的文件里up和down内容都是空的。然后我不信邪运行了以下Update-Database,结果数据库并没有添加到我刚增加的字段。

这时候我关掉vs,重启,又尝试去增加了个字段,运行Add-Migration后,生成的文件就只有我现在加个这一个字段更新。

问题来了,上次遗漏的就补不回去了吗,我不想重删整个数据库取重建。

我不知道设计者是怎么设计这个Add-Migration的。我理解这个东西应该很好设计才对。
每次执行Add-Migration的时候去比对数据库的scheme和代码的entity,把差异的列出来就好。但是事实好像不是这样的。数据库还有个MigrationHistory记录的莫名的什么东西。


现在先要解决的问题的是这个遗漏的字段怎么修补上去?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

我只土不豪 2022-09-13 00:15:25

数据库中的MigrationHistory表就是用来记录每次进行数据迁移的记录。你要检查下你的这个表中数据是否手动删除了?在检查下vs中数据迁移的时候自动生成的文件是否存在。比如:“20170831XXX.cs”

提笔书几行 2022-09-13 00:15:25

粗暴一点:

  1. 直接删掉Migraiton文件夹
  2. Enable-Migrations -yourContextName
  3. Add-Migration Initial
  4. Update-Database
从来不烧饼 2022-09-13 00:15:25

数据库中的确有_MigrationHistory表记录迁移
我的猜测是:
比如你的迁移文件夹是这样的
Migration_v1.cs
Migration_v2.cs (添加了字段abc)

当你弄出了v2版本的迁移,并执行了迁移,此时数据库中的_MigrationHistory记录了你现在的版本(v2)
但是你对v2不满意,手动删除了v2.cs,但是数据库中记录的版本还是(v2)

当你创建新的版本时
Migration_v3.cs (添加了字段efg)
迁移工具会先扫下数据库查看历史,最好只会生成添加字段efg的迁移

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文