ALTER TABLE DROP COLUMN 失败,因为 'xxx' 列不存在于 table 'yyy' 中

ALTER TABLE DROP COLUMN failed because column 'xxx' does not exist in table 'yyy'

我错了。我删除了数据库中 table __MigrationHistory 中的一些行。
现在,当我 运行 我的项目时,我强制出现此错误:

ALTER TABLE DROP COLUMN failed because column 'xxx' does not exist in table 'yyy'.

我该如何解决这个问题?

为什么不更改 table 以重新创建丢失的列?然后尝试再次删除 table :)

添加新迁移以重新同步:

add-migration MissingXXX -IgnoreChanges // tells EF to just take a snapshot
update-database

现在您已恢复同步,可以继续进行未来的模型更改。

好的,我的问题终于解决了
我在我的数据库中手动将字段 'xxx' 添加到 table 'yyy'。

这里有更多详细信息 因为我遇到了同样的问题并且这个问题得到了完整的帮助: 无论出于何种原因,如果您收到此错误: ALTER TABLE DROP COLUMN 失败,因为 'xxx' 列在 table 'yyy'. 中不存在 做这个: 手动更新数据库中的table

  1. 转到服务器资源管理器 (2)
  2. 表格
  3. 双击 'yyy'
  4. 添加: 'xxx'
  5. 的新专栏
  6. Visual S左上角"Any CPU"下有 是一个选项 "UPDATE"。这将更新 table.
  7. 现在转到模型 'yyy.cs' 下的那个 table 模型 添加: public 字符串 'xxx' {get;设置;}
  8. 现在在 PM 中(工具 --> Neu 获取包管理器 --> PM)
  9. 更新迁移或回滚由您决定。

我在尝试向 table 添加新字段时使用 EF Core 3.1.1 得到了这个。

我没有删除 MigrationHistory table 中的条目,但我恢复了上次迁移,删除了生成的迁移文件并使用 'add migration' 再次生成它们。然后我注意到迁移的新 Up 和 Down 方法使用 AlterColumn 而不是 AddColumn 和 RemoveColumn。我从之前的 Up 和 Down 方法中得到了代码并解决了它。