将 EF 迁移合并到新的 InitialCreate 中

2023-12-23

我使用 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(使用前将#替换为@)

将 EF 迁移合并到新的 InitialCreate 中 的相关文章

随机推荐

  • 使用 RxJS 进行批处理?

    我猜想这应该很容易实现 但我在解决它时遇到了困难 我猜是概念上 我拥有的是一个返回 JSON 对象数组的 API 我需要单步执行这些对象 并对每个对象进行另一个 AJAX 调用 问题是处理每个 AJAX 调用的系统一次只能处理两个活动调用
  • 如何在带有 razor 的 MVC 3 中使用正则表达式

    当我将 MVC 3 与 razor 一起使用时 它工作正常 但是当我使用 section head 编写正则表达式时 他们不起作用 function isValidEmailAddress emailAddress var pattern
  • TortoiseSVN不保存密码

    我在 Windows 7 Professional 64 位中安装了 Tortoisesvn 1 8 7 乌龟总是要求保存密码 但还是不保存 我多次清除路径 AppData Roaming Subversion 但没有在 svn simpl
  • 禁用 Ruby on Rails 中的文本框?

    我有代码 我想禁用使用嵌入式 ruby 的文本框 但无法这样做 如果我能就我所面临的情况获得任何帮助 我将不胜感激 禁用文本框后 我想让一个按钮从数据库表 项目符号 生成四个随机 ID 并将它们以数组格式打印在禁用的文本框中 并利用这四个打
  • 编辑电子邮件地址后无法登录

    I have 格里特 v3 0 0在我的服务器上运行 昨天一切正常 这是我的身份验证方法 auth type http emailFormat 0 domain com 我不确定这是否是问题的原因 但我可能已删除我的电子邮件地址 电子邮件受
  • 将列值从一个数据库.表复制到另一个数据库.表

    让我们保持简短而甜蜜 我想这样做 我现在已经失败了很多次 一次尝试甚至用空白更新了行 UPDATE Database2 Table1 SET Database2 Table1 Column1 Database2 Table1 Column2
  • Node Express 强制所有静态路由指向根路径

    我有一个 node js 应用程序 我正在尝试对其进行通用化 以便无论后端的 URL 是什么 它始终使用根路径来提供静态文件 所以目前我的应用程序位于https myapp heroku com https myapp heroku com
  • 如何在 twitter-bootstrap 中停止图像响应?

    我正在使用 twitter bootstrap 来制作响应式布局 它的效果非常棒 它使图像过于敏感 我需要一些图像只需要固定宽度和高度 div class span1 img src http i ytimg com vi uGBKzIY4
  • 在asp.net MVC中,我们可以从另一个控制器调用一个控制器的方法吗?

    在asp net MVC中 我们可以从另一个控制器调用一个控制器的方法吗 您也可以直接重定向到该方法 如下所示 public class ThisController public ActionResult Index return Red
  • 如果 using 块返回,IDisposable 是否会被释放?

    例如 using var something GetSomething something DoSomething if something IsX return true return false 是的 一点没错 这Dispose方法被调
  • C# - 如何将转义字符串转换为文字字符串? [复制]

    这个问题在这里已经有答案了 可能的重复 我可以在运行时展开包含 C 文字表达式的字符串吗 https stackoverflow com questions 3298075 can i expand a string that contai
  • 有没有办法在 C++ 中传递字符串文字作为引用

    在 C 中 如果值不能为 NULL 则通常通过引用而不是指针传递 假设我有一个具有以下签名的函数 该函数通常与字符串文字一起使用 void setText const char text 我想知道如何更改函数以使其接受引用 并且具有不接受
  • Java中的paintComponent()没有被调用[重复]

    这个问题在这里已经有答案了 我正在尝试绘制一个简单的矩形 但我认为 PaintComponent 方法没有被调用 这是带有 main 方法的类的代码 package painting import java awt import javax
  • 电子,在browserify之后,fs.existsSync不是一个函数

    我读了很多关于 browserify 和 electro 以及 gui 浏览器问题 但 browserify 仍然存在问题 说 fs existsSync 不是一个函数 并且 required 未定义 完整的故事 我用电子创建了简单的图形用
  • 关于静态方法的 Java 编码约定

    这是一个非常简单的问题 但我认为这是一个有点争议的问题 当我编写 Java 类代码时 我使用以下顺序 class Foo static fields instance fields constructors methods non stat
  • 使用JDK的JAXB,不带ns2前缀

    在阅读了 Oracle 论坛 Stackoverflow java net 上有关此内容的所有帖子后 我终于在这里发帖了 我正在使用 JAXB 创建 XML 文件 但问题是它添加了著名的ns2在我的元素之前添加前缀 我已经尝试了所有没有人为
  • C++ 中的命令模式序列化

    我想在 C 中执行以下操作 创建命令对象 序列化它 发送到另一台电脑 反序列化 execute 两种情况 发送者和接收者都是win 7 电脑 发送者是 nix 接收者是 win 7 我找到了一个序列化教程 http www function
  • php date_diff 以小时为单位

    如何使下面的代码将天数转换为小时数 timestart date create 02 11 2011 row gt timestart row gt timestart returns time in 00 00 00 format tim
  • 模板实例化、两阶段名称查找、自动推导类型的不同行为

    看到这个问题后何时检查 C 模板实例化类型 https stackoverflow com q 34204483 2805305 并且很长一段时间以来我都在想同样的事情 我开始玩代码来吸收知识 答案给出了明确且正确的解释 它提到了两阶段名称
  • 将 EF 迁移合并到新的 InitialCreate 中

    我使用 EF 迁移已经有一段时间了 我的项目中有超过 100 个迁移文件 我想在继续之前将它们合并到一个迁移中 即我想用一个新版本替换现有的 InitialCreate 迁移 该版本考虑了我的所有后续更改 以便我可以删除所有其他迁移文件 如