如何在EF Core代码首次迁移中进行数据迁移?

时间:2016-07-25 13:00:28

标签: c# entity-framework entity-framework-core

我有一个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查询写入当前的数据库。

其他任何想法我怎么能这样做?

1 个答案:

答案 0 :(得分:3)

该方案不属于EF Core 1.0.0的迁移功能。 MigrationBuilder API旨在构建用于转换数据库架构的SQL,并且不适用于处理多个数据库。

您可以在https://github.com/aspnet/EntityFramework/tree/1.0.0/src/Microsoft.EntityFrameworkCore.Relational/Migrations的EF Core源代码中自行检查迁移的实现。

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