以下是我多次经历的事件顺序:
- 手动向数据库添加列
- 向 DbContext 添加与该列对应的属性
- 生成迁移(因此可以签入并且其他开发人员可以更新他们的数据库)
现在我处于无法使用上下文的状态,因为它给出了需要更新的错误。
但是,由于库已经存在(重复列),更新会导致错误。
那么我只是从根本上“做错了”还是包管理器中有一些命令说“我手动更新了我的数据库并且它现在是最新的”?
以下是我多次经历的事件顺序:
现在我处于无法使用上下文的状态,因为它给出了需要更新的错误。
但是,由于库已经存在(重复列),更新会导致错误。
那么我只是从根本上“做错了”还是包管理器中有一些命令说“我手动更新了我的数据库并且它现在是最新的”?
发生的事情是 EF 还不知道您的迁移已被应用。
我所做的是在包管理器控制台中输入:
update-database -v -f -script
生成迁移脚本 - 然后我复制生成的 sql 中的最后一行,将数据添加到 __MigrationHistory 表中,然后手动执行。它看起来像这样:
这应该将您的代码与数据库同步。
为防止这种情况一次又一次地出现,您不应在数据库中手动添加该列,而应使用 update-database 对其进行更新。
正确的步骤应该是: