EF 迁移 - 迁移前删除数据库架构

EF Migrations - Delete Database schema before migration

我正在尝试创建一个迁移,它将清除整个 schema 的数据,然后是 运行 迁移。 我找到了一种方法 运行 仅针对上下文集进行迁移。 我找不到删除给定上下文中数据的方法,而不是整个数据库中的数据。

当前仅用于迁移的代码:

var context = scope.ServiceProvider.GetRequiredService<TContext>();
await context.Database.MigrateAsync();

context.Database.EnsureDeleted(); 允许我在 运行ning 迁移之前删除数据库,但它似乎忽略了我提供的上下文(如文档中所述)。

关于如何删除上下文中的数据有什么想法吗?

谢谢!

我建议创建一个空迁移,然后添加原始 SQL 以删除模式:

  public partial class DropSchemaMigration : Migration
            {
                protected override void Up(MigrationBuilder migrationBuilder)
                {
                    migrationBuilder.Sql("DROP SCHEMA MY_SCHEMA;");
                }
        
        }

然后进行其他迁移。假设这是一个 code-first 方法。 您可以存储所有更改、执行空迁移、弹出存储并生成其他迁移。

或者,如果感觉更自然,进行迁移,在 Up 方法的第一行,您可以设置 SQL 命令

public partial class MyMigration: Migration
            {
                protected override void Up(MigrationBuilder migrationBuilder)
                {
                    migrationBuilder.Sql("DROP SCHEMA MY_SCHEMA;");
                   //auto-generated mappings
                }
        
            }