场景描述:项目中存在两个迁移 TeacherTeachingPlanTeachingPlanTeacher 之后创建,并且已经执行 dotnet ef database update 将新迁移应用到数据库。此时,因为实体修改,我们希望删除 TeachingPlan 迁移然后创建新的 TeachingPlan 迁移,该怎么办?

示例:查看迁移列表

dotnet ef migrations list
Build started...
Build succeeded.
20211026071835_Teacher
20211108141706_TeachingPlan

分析:直接移除 TeachingPlan 行不行?我们先试试。

示例:移除最后一个迁移

dotnet ef migrations remove
Build started...
Build succeeded.
The migration '20211108141706_TeachingPlan' has already been applied to the database. Revert it and try again. If the migration has been applied to other databases, consider reverting its changes using a new migration instead.

移除失败:迁移已经应用到数据库。如果该迁移已经应用于其他数据库,请考虑用一个新的迁移来恢复其变化。

根据错误提示,建议我们再创建一个新的迁移,比如:TeachingPlan_01 ,这样能够达到效果,但是不够简洁,存在多个作用相同的迁移。

重新梳理思路:在移除迁移之前,先将数据库恢复到数据迁移之前的状态。使用 dotnet ef database update [miagration_anme] 可以将数据库架构恢复到指定迁移时的状态。

示例:将数据库恢复到 Teacher

dotnet ef database update Teacher

然后移除 TeachingPlan 迁移

dotnet ef migrations remove

移除成功!此时迁移和数据库结构都恢复到 Teacher 状态,再重新创建迁移:

dotnet ef migrations add TeachingPlan

迁移回退任务完成!

小结:

  • 迁移具有前后连贯性,迁移和数据架构应保持一致性。应避免删除已应用到生产数据库的任何迁移。
  • dotnet ef migrations remove 不带参数,每执行一次,则移除最新创建的迁移。
  • dotnet ef database update 可以将数据库更新到任何一个指定迁移时的架构。

EF Core 小技巧:迁移已经应用到数据库,如何进行迁移回退操作?的更多相关文章

  1. MySql 使用 EF Core 2.0 CodeFirst、DbFirst、数据库迁移(Migration)介绍及示例

    dotnet core 2.0 发布已经好几天了,期间也把原来 dotnet core 1.1 的 MVC 项目升级到了 2.0,升级过程还是比较顺利的,变动也不是太多.升级的过程中也少不了 Enti ...

  2. EF Core 2.0中如何手动映射数据库的视图为实体

    由于Scaffold-DbContext指令目前还不支持自动映射数据库中的视图为实体,所以当我们想使用EF Core来读取数据库视图数据的时候,我们需要手动去做映射,本文介绍如何在EF Core中手动 ...

  3. .Net Core小技巧 - Swagger适配虚拟目录及二级目录

    前言 随着前后端分离模式与微服务架构的出现,Web API变得越来越重要及普遍.而后出现的网关技术,使开发者更倾向于使用二级/多级目录来暴露Web API,一是暴露的端口更少,方便管理:二是在网关中可 ...

  4. EF Core 小坑:DbContextPool 会引起数据库连接池连接耗尽

    DbContextPool 是 ASP.NET Core 2.1 引入的新特性,可以节省创建 DbContext 实例的开销,但没有想到其中藏着一个小坑. 最近有一个 ASP.NET Core 项目持 ...

  5. .Net Core小技巧 - Hosted Services + Quartz实现定时任务调度

    背景 之前一直有朋友问,.Net Core + Linux环境有没有类似Windows服务的东西.其实是有的,我了解的方法有两种: #1 创建一个ASP.Net Core的Web项目(如Web API ...

  6. .Net Core小技巧 - 使用Swagger上传文件

    前言 随着前后端分离开发模式的普及,后端人员更多是编写服务端API接口.调用接口实现文件上传是一个常见的功能,同时也需要一个选择文件上传的界面,可以编写前端界面上传,可以使用Postman.curl来 ...

  7. ASP.NET Core小技巧

    设定开发环境为开发模式,呈现具体错误内容 dotnet run启动时,会在环境变量中查找ASPNETCORE_ENVIRONMENT变量的值,如果没有,则默认会当做Production来处理,隐藏错误 ...

  8. 在.NET Core类库中使用EF Core迁移数据库到SQL Server

    前言 如果大家刚使用EntityFramework Core作为ORM框架的话,想必都会遇到数据库迁移的一些问题. 起初我是在ASP.NET Core的Web项目中进行的,但后来发现放在此处并不是很合 ...

  9. 在.net core程序中使用EntityFrameok(非EF Core)

    最近用NoSQL较多写,用传统的EF到不多,但在一些.net core小程序中也小试牛刀过,不过当时用的是微软为.net core量身定制的Entity Framework Core,只是一些比较常规 ...

随机推荐

  1. AT4505-[AGC029F]Construction of a tree【构造题,hall定理,网络流】

    正题 题目链接:https://www.luogu.com.cn/problem/AT4505 题目大意 给出\(n\)个点和\(n-1\)个点集\(U_i\),每个点集中选择两个点连边使得该图是一棵 ...

  2. Mysql explain中key_len的作用及计算规则

    key_len表示索引使用的字节数,根据这个值可以判断索引的使用情况,特别是在组合索引的时候,判断该索引有多少部分被使用到非常重要. 在计算key_len时,下面是一些需要考虑的点: 索引字段的附加信 ...

  3. 反调试——7——CRC检测

    反调试--7--CRC检测 CRC32: CRC的全称是循环冗余校验,作用是为了检测数据的完整性. CRC32的检测原理: 程序被编译后,代码段是固定的,因为已经被写死了. 我们在调试程序的时候,打断 ...

  4. 基于go语言学习工厂模式

    工厂模式 简单工厂模式(Simple Factory) 定义 优点 缺点 适用范围 代码实现 工厂方法模式(Factory Method) 定义 优点 缺点 适用范围 代码实现 抽象工厂模式(Abst ...

  5. mysql创建用户及赋予某用户权限(附带基础查看表内容)

    首先登陆mysql 一:show databases;  展示所有数据库(root用户下) 二:use xxx (数据库名)使用use选择数据库 三:show xxx   查看数据库中的表 四:des ...

  6. SpringBoot-语言国际化

    在resouce下新建i18ni18n 类似的还有k8s在i18n下新建signIn.properties再新建 signIn_zh_CN.properties此时,iden会帮助合并: 现在可以在这 ...

  7. docker环境下搭建python3.6

    前言:当我们在一台电脑上搭建了python3.6的环境,下次换了个电脑或者换成linux的系统了又得重新搭建一次,设置环境变量,下载pip等操作.所以使用docker 一.安装python步骤: 1. ...

  8. Android QMUI实战:实现APP换肤功能,并自动适配手机深色模式

    Android换肤功能已不是什么新鲜事了,市面上有很多第三方的换肤库和实现方案. 之所以选择腾讯的QMUI库来演示APP的换肤功能,主要原因: 1.换肤功能的实现过程较简单.容易理解: 2.能轻松适配 ...

  9. C#开发BIMFACE系列52 CS客户端集成BIMFACE应用的技术方案

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在我的博客<C#开发BIMFACE系列49 Web网页集成BIMFACE应用的技术方案>.<C#开发BI ...

  10. C#开发BIMFACE系列53 WinForm程序中使用CefSharp加载模型图纸1 简单应用

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在我的博客<C#开发BIMFACE系列52 CS客户端集成BIMFACE应用的技术方案>中介绍了多种集成BIM ...