2016-07-25 157 views
1

我有一个Code First EF Core项目。如何在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查询写入当前数据库。

任何其他的想法,我可以做到这一点?

回答

3

该方案不属于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迁移之外编写自己的代码。

+0

是的,我也通过在他们的GitHub页面上询问发现。不管怎么说,还是要谢谢你。 –