如何卸载 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 update
或 Update-Database
相同下午命令。传递 "0"
(这是 Migration.InitialDatabase
常量的值)将执行相关操作。
您还需要以下 using
:
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
和这样的代码:
var migrator = dbContext.GetService<IMigrator>();
migrator.Migrate(Migration.InitialDatabase);
我正在开发 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. UseDbContext.GetService<IMigrator>()
to access it.
这给了你解决方案,因为 IMigrator
接口提供 Migrate
方法接受可选的 targetMigration
参数,其语义与 dotnet ef database update
或 Update-Database
相同下午命令。传递 "0"
(这是 Migration.InitialDatabase
常量的值)将执行相关操作。
您还需要以下 using
:
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
和这样的代码:
var migrator = dbContext.GetService<IMigrator>();
migrator.Migrate(Migration.InitialDatabase);