首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何还原数据库EF迁移工具

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

Stack Overflow用户
提问于 2015-04-30 21:17:43
回答 4查看 4.7K关注 0票数 1

我得到了一个数据库,意外地删除了__MigrationHistory表。现在程序抛出错误,我不能丢失所有的数据。还有恢复我删除的表吗??我会失去我所有的数据库吗?

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

其他信息:无法更新数据库以与当前模型匹配,因为有挂起的更改,并且禁用了自动迁移。要么将挂起的模型更改写入基于代码的迁移,要么启用自动迁移。将DbMigrationsConfiguration.AutomaticMigrationsEnabled设置为true以启用自动迁移

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-04-30 21:50:25

您可以在项目中“重置”迁移的状态。本质上,您将创建一个迁移状态,其中实体框架认为数据库的当前状态是“第一次”迁移。但是,请注意,这将限制您回滚到具有早期迁移状态的应用程序的早期版本。

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

Stack Overflow用户

发布于 2016-03-16 13:59:01

如果您想维护您的迁移历史记录

  1. 如果您同时删除了_MigrationHistory的内容和结构,请使用

创建表dbo.MigrationHistory

  1. 注释所有迁移代码文件的Up()方法的内容
  2. 运行update-database命令:它将重新填充__MigrationHistory,而不尝试执行任何其他操作
  3. 取消注释在迁移代码文件中注释的内容,以便在部署到新数据库时创建db模型。
票数 2
EN

Stack Overflow用户

发布于 2015-04-30 21:58:55

将脚本指向另一个空数据库。运行你所有的迁移。将表和数据从__MigrationHistory复制到生产数据库中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29977907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档