如何卸载 EF Core 表?或者如何删除所有迁移?或者如何从用户代码调用"dotnet ef 数据库更新 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 updateUpdate-DatabasePM 命令相同。传递"0"(即Migration.InitialDatabase常量的值(将执行相关操作。

您将需要以下额外的using

using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;

并像这样编写代码:

var migrator = dbContext.GetService<IMigrator>();
migrator.Migrate(Migration.InitialDatabase);

相关内容

最新更新