如何在EF Core代码优先迁移中进行数据迁移

本文关键字:迁移 数据 EF Core 代码 | 更新日期: 2023-09-27 17:58:29

我有一个Code First EF Core项目。

在模式迁移中,我需要将数据迁移到外部数据库。所以我不能依赖migrationBuilder.Sql()。我需要做的是在本地数据库上运行一个查询,并将返回的数据插入到外部数据库中。换句话说,我想做这样的事情:

// Obviously this is pseudo-code; these interfaces mostly don't exist
protected override void Up(MigrationBuilder migrationBuilder)
{
  var results = migrationBuilder.GetQueryResults("some query");
  using (var extDb = new ExternalDb())
  {
    foreach (var row in results) 
    {
      InsertToExternalDb(row, extDb);
    }
  }
}

但是我在MigrationBuilder上找不到任何从当前数据库返回行的方法,我甚至找不到一种方法来获取连接字符串,从而可以向当前数据库编写原始ADO查询。

还有其他想法吗?我该怎么做?

如何在EF Core代码优先迁移中进行数据迁移

该场景不属于EF Core 1.0.0的迁移能力范围。MigrationBuilder API设计用于构建用于转换数据库模式的SQL,而不是设计用于处理多个数据库。

您可以在EF Core的源代码中查看迁移的实现,网址为https://github.com/aspnet/EntityFramework/tree/1.0.0/src/Microsoft.EntityFrameworkCore.Relational/Migrations.

要完成数据库之间的数据迁移,您需要在EF Core迁移之外编写自己的代码。