Ho un progetto Code First EF Core.
Nella mia migrazione dello schema, ho bisogno di eseguire una migrazione dei dati a un database esterno. Quindi non posso ricorrere a migrationBuilder.Sql()
. Quello che devo fare è eseguire una query sul database locale e inserire i dati restituiti nel database esterno. In altre parole, voglio fare qualcosa del genere:
// 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);
}
}
}
Ma non riesco a trovare alcun metodo su MigrationBuilder
che restituisca le righe dal database corrente e non riesco nemmeno a trovare un modo per ottenere la stringa di connessione in modo tale da poter scrivere una query ADO non elaborata sul database corrente.
Altre idee su come potrei fare questo?
Lo scenario non rientra nella capacità delle migrazioni per EF Core 1.0.0. L'API MigrationBuilder
è progettata per creare SQL per la trasformazione dello schema del database e non è progettata per funzionare con più database.
Puoi controllare l'implementazione delle migrazioni nel codice sorgente di EF Core all'indirizzo https://github.com/aspnet/EntityFramework/tree/1.0.0/src/Microsoft.EntityFrameworkCore.Relational/Migrations .
Per eseguire una migrazione dei dati tra database, è necessario scrivere il proprio codice al di fuori delle migrazioni EF Core.