如何还原数据库EF迁移工具

Cai*_*eto 1 c# entity-framework ef-migrations

我有一个数据库,不小心删除了__MigrationHistory表.现在该程序抛出错误,我不能丢失所有数据.反正有没有恢复我删除的表?我会丢失所有数据库吗?

我手动添加了__MigrationHistory,现在这是错误:

附加信息:无法更新数据库以匹配当前模型,因为存在挂起的更改并且已禁用自动迁移.将挂起的模型更改写入基于代码的迁移或启用自动迁移.将DbMigrationsConfiguration.AutomaticMigrationsEnabled设置为true以启用自动迁移

Cla*_*ies 5

您可以"重置"项目中的迁移状态.您将基本上创建一个迁移状态,其中Entity Framework认为数据库的当前状态是"第一次"迁移.但请注意,这将限制您使用早期迁移状态回滚到以前版本的应用程序的能力.

  1. 从项目中的迁移文件夹中删除现有迁移.
  2. 删除数据库中的__MigrationHistory表(已完成).
  3. 在程序包管理器控制台中运行以下命令:add-migration Reset.由于迁移文件夹不包含任何先前的迁移,因此Reset迁移将是当前状态下模型的完整脚本. 要点:确认此Up方法与当前数据库表状态完全匹配.
  4. Reset迁移中,注释掉Up方法中的所有内容.我们不想运行该Up方法,因为数据库应该已经匹配.
  5. 运行update-database命令.这将创建一个新__MigrationHistory表并在表中创建一个新行,表明该数据库与此Reset迁移步骤匹配.但是,它不会对数据库进行任何更改,因为该Up方法为空.
  6. (可选)删除迁移中Up方法的注释Reset,以便可以将新数据库编写到此时.