我正在开发 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
或Update-Database
PM 命令相同。传递"0"
(即Migration.InitialDatabase
常量的值(将执行相关操作。
您将需要以下额外的using
:
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
并像这样编写代码:
var migrator = dbContext.GetService<IMigrator>();
migrator.Migrate(Migration.InitialDatabase);