c# - 如何卸载 EF Core 表?或者如何删除所有迁移?或者如何从用户代码中调用 `dotnet ef database update 0`?
问题描述
我正在开发 Web 应用程序,并在它附近开发在数据库中安装 ef 核心表的小型命令行应用程序。最后可以打电话dbContext.Database.Migrate();
,这很有效。
现在我想提供unistall
选项(使用此应用程序)。
但是如何删除迁移(意味着dotnet ef database update 0
从我的代码中调用功能)?
它可能不是一个命令调用(就像在 的情况下一样dbContext.Database.Migrate();
)。但是通过迁移程序集中的所有迁移和调用“Downs”的代码片段。
解决方案
EF Core 仅公开提供dbContext.Database.Migrate();
用于迁移最新版本的扩展方法。它在 EF Core 文档的运行时应用迁移部分中提到,其中还包含以下内容
笔记
此方法建立在
IMigrator
服务之上,可用于更高级的场景。用于DbContext.GetService<IMigrator>()
访问它。
这为您提供了解决方案,因为IMigrator
接口提供了Migrate
接受可选targetMigration
参数的方法,其语义与dotnet ef database update
or Update-Database
PM 命令相同。传递"0"
(即Migration.InitialDatabase
常量的值)将执行相关操作。
您将需要以下附加using
s:
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
和这样的代码:
var migrator = dbContext.GetService<IMigrator>();
migrator.Migrate(Migration.InitialDatabase);
推荐阅读
- python - 返回多边形 geopandas 中的点列表
- swift - 当 ObservableObject 的所有属性更新时通知 SwiftUI
- r - 关于在 R 中创建时间段/间隔的问题?
- azure - Azure Function App 运行“az graph query”
- java - 显示从 0 到 X 的数字,反之亦然
- python - Matplotlib 箱线图未显示预期输出
- python - Tkinter、Python 中的中文文本
- git - 代理密钥 RSA SHA256 返回了不正确的签名类型
- python - 使用solve_ivp进行同时事件检测
- bigdl - BigDL:保存模型抛出异常:“这是一个不推荐使用的方法。请改用 saveModel。”