2016-07-25 159 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頁面上詢問發現。不管怎麼說,還是要謝謝你。 –