如何卸载 EF Core 表?或者如何删除所有迁移?或者如何从用户代码中调用 `dotnet ef database update 0`?

How to uninstall EF Core tables? Or how to remove all migrations ? Or how to call `dotnet ef database update 0` from user code?

我正在开发 Web 应用程序并在其附近开发在数据库中安装 ef 核心表的小型命令行应用程序。最后可以调用 dbContext.Database.Migrate(); 完成,这有效。

现在我想提供 unistall 选项(通过此应用程序)。

但是如何删除迁移(意味着从我的代码中调用 dotnet ef database update 0 的功能)?

它可能不是一个命令调用(在 dbContext.Database.Migrate(); 的情况下)。但是在 'Downs'.

的迁移程序集和调用中循环遍历所有迁移的片段

EF Core 仅公开提供用于迁移最新版本的 dbContext.Database.Migrate(); 扩展方法。它在 EF Core 文档的 Applying migrations at runtime 部分中提到,其中还包含以下内容

Note

This method builds on top of the IMigrator service, which can be used for more advanced scenarios. Use DbContext.GetService<IMigrator>() to access it.

这给了你解决方案,因为 IMigrator 接口提供 Migrate 方法接受可选的 targetMigration 参数,其语义与 dotnet ef database updateUpdate-Database 相同下午命令。传递 "0"(这是 Migration.InitialDatabase 常量的值)将执行相关操作。

您还需要以下 using

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

和这样的代码:

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