我使用 EF 迁移已经有一段时间了,我的项目中有超过 100 个迁移文件。我想在继续之前将它们合并到一个迁移中 - 即我想用一个新版本替换现有的 InitialCreate 迁移,该版本考虑了我的所有后续更改,以便我可以删除所有其他迁移文件。
如果我不担心丢失数据库中的所有数据,那么我很容易做到这一点,但我确实担心。
我怎样才能实现这一点,同时保持所有数据完好无损,并保留通过仅运行 Update-Database 从头开始重新创建数据库(没有数据)的能力(我相信这是不可能的)Julie Lerman 概述的方法 http://thedatafarm.com/blog/data-access/using-ef-migrations-with-an-existing-database/)?
考虑阅读 Rick Strahl 的这篇好文章:https://weblog.west-wind.com/posts/2016/jan/13/resetting-entity-framework-migrations-to-a-clean-slate https://weblog.west-wind.com/posts/2016/jan/13/resetting-entity-framework-migrations-to-a-clean-slate
基本上,解决方案并不简单,需要的不仅仅是将所有迁移重置为一个
因为您有两种场景需要适合一个迁移类:
- 创建一个新数据库=>迁移类应该包含每个表的创建
- 我的数据库已经是最新的 => 我需要一个空的迁移类
解决方案:
此过程的想法基本上是这样的:数据库和 EF 架构是最新的并且正是您想要的方式,因此我们将删除现有的迁移并创建新的初始迁移。
总之,执行此操作的步骤是:
- 从数据库中删除 _MigrationHistory 表
- 删除项目的 Migrations 文件夹中的各个迁移文件
- 在包管理器控制台中启用迁移
- 在 PMC 中添加迁移初始值
- 注释掉初始迁移中Up方法内部的代码
- PMC 中的更新数据库(除了创建迁移之外什么也不做
Entry)删除Initial方法中的注释你现在基本上已经
将架构重置为最新版本。
- 在所需数据库上执行注释掉的迁移后,取消注释迁移代码
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)