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
}
}
我正在尝试创建一个迁移,它将清除整个 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
}
}