gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 18:53:10 28 4
gpt4 key购买 nike

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

现在我想提供unistall 选项(与这个应用程序)。

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

它可能不是一个命令调用(在 dbContext.Database.Migrate(); 的情况下)。但是在迁移程序集和调用“Downs”中循环遍历所有迁移的片段。

最佳答案

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

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 接口(interface)提供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);

关于c# - 如何卸载 EF Core 表?或者如何删除所有迁移?或者如何从用户代码中调用 `dotnet ef database update 0`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52064291/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com