You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Entity Framework Core 如何编程执行Remove-Migration/Update-Database 0

编程执行EF Core迁移命令的实现方案

实现Update-Database 0等价功能

Update-Database 0的作用是将数据库回滚到无任何迁移应用的初始状态,你可以通过EF Core内置的IMigrator服务实现:

  1. 先引用命名空间 Microsoft.EntityFrameworkCore.Migrations
  2. 调用示例代码:
// 已初始化的DbContext实例
var migrator = context.GetService<IMigrator>();
// 异步执行回滚所有迁移
await migrator.MigrateAsync(targetMigration: null);
// 同步调用写法:migrator.Migrate(targetMigration: null);

如果需要回滚到指定迁移,只需将targetMigration参数替换为目标迁移的ID即可,和Package Manager控制台中Update-Database [迁移名]的用法完全一致。

实现Remove-Migration等价功能

注意:Remove-Migration本质是操作项目中的迁移源码文件,仅可在开发环境使用,禁止在生产运行时代码中调用。
实现该功能需要先安装Microsoft.EntityFrameworkCore.Design NuGet包,之后通过IMigrationsOperations服务调用:

// 引用命名空间 Microsoft.EntityFrameworkCore.Design
var migrationOperations = context.GetService<IMigrationsOperations>();
// 参数分别为:项目根目录路径、迁移所在根命名空间、是否强制移除(即使迁移已应用到数据库)
migrationOperations.RemoveMigration(
    projectDir: @"C:\your\project\root\path", 
    rootNamespace: "YourProjectNamespace", 
    force: false);

其中force参数设为true时等价于Remove-Migration -Force命令,即使对应迁移已经应用到数据库,也会强制删除迁移源码文件。

补充说明

你目前使用的两个API都是官方推荐的标准用法:

  • context.Database.GetMigrations() 用于获取项目中定义的所有迁移列表
  • context.Database.Migrate() 等价于无参数的Update-Database命令,会自动应用所有待执行的迁移

内容的提问来源于stack exchange,提问作者Asif Shakir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:45:05