我弄了个数据库,不小心把__MigrationHistory表给删了。 现在程序抛出错误,我不能丢失所有数据。 反正有恢复我删除的表吗? 我会丢失所有数据库吗?
我手动添加了 __MigrationHistory,现在这是错误:
Additional information: Unable to update database to match the current model because there are pending changes and automatic migration is disabled. Either write the pending model changes to a code-based migration or enable automatic migration. Set DbMigrationsConfiguration.AutomaticMigrationsEnabled to true to enable automatic migration
最佳答案
您可以“重置”项目中的迁移状态。您实质上将创建一个迁移状态,其中 Entity Framework 认为您的数据库的当前状态是“第一次”迁移。但是请注意,这将限制您回滚到具有较早迁移状态的应用程序的先前版本的能力。
- 从项目的迁移文件夹中删除现有迁移。
- 删除数据库中的 __MigrationHistory 表(已完成)。
- 在程序包管理器控制台中运行以下命令:
add-migration Reset
。因为 migrations 文件夹不包含任何以前的迁移,Reset
迁移将是模型当前状态的完整脚本。 重要验证此Up
方法是否与当前数据库表状态完全匹配。 - 在
Reset
迁移中,注释掉Up
方法中的所有内容。我们不想运行Up
方法,因为数据库应该已经匹配了。 - 运行
更新数据库
命令。这将创建一个新的__MigrationHistory
表并在表中创建一个新行,表示数据库正在匹配此Reset
迁移步骤。但是,它不会对数据库进行任何更改,因为Up
方法是空的。 - (可选) 移除
Reset
迁移中Up
方法周围的注释,以便新数据库可以针对这一点编写脚本。
关于c# - EF迁移工具如何恢复数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29977907/