首页 > 解决方案 > 从 __MigrationHistory 表中删除数据后的 EF 6 Code First 迁移

问题描述

我不小心从 __MigrationHistory 表中删除了数据,我尝试将新表和列更改迁移到 db。此时 EF6 显示错误

"There is already an object named 'xxxx' in the database.".

我尝试了使用此命令的方式,并且对表列更改没有影响。

Add-Migration MyMigration1 -IgnoreChanges
Update-database -Force

有很多关于重新创建数据库或其他的建议。但是这些方式可能会影响数据丢失到我的数据库中,其中包含大量测试数据,我无法丢失任何数据。如何在不丢失任何数据的情况下解决此错误。如果有人请...

更新

最后我找到了解决我的问题的方法。我不确定这是解决此类问题的首选方法,但它对我有用。

我清理了 __MigrationHistory 表中的数据,尝试迁移新数据库并将数据从新数据库的 __MigrationHistory 复制到旧数据库,然后将 AutomaticMigration 设置为 true 并运行 update-database 命令,问题就解决了。

标签: asp.net-mvcentity-frameworkentity-framework-6

解决方案


我不确定它是否是解决这个问题的好方法,但它对我有用。

我刚刚使用正确版本和已应用迁移的名称插入到该表中,我在 EF Core 中完成了它,它确实有效,但请等待有人确认我在写什么。

我看到的问题是您需要再填写两个字段(在 EF Core 中只有两列),但我认为您可以使用例如 SQL Profiler 接收它们


推荐阅读