private void Migrador_OnInicioMigracaoTabela(string tabela, int totalRegistros) { TotalRegistrosNaTabelaAtual = totalRegistros; RegistrosMigradosNaTabelaAtual = 0; TabelaEmMigracao = tabela; LogaMensagem?.Invoke($"Migrando dados da tabela {TabelaEmMigracao} com {TotalRegistrosNaTabelaAtual:N0} registros"); }
private void Migrador_OnFimMigracaoTabela(string tabela, double tabelasMigradas, TimeSpan tempoGasto) { TabelasMigradas = (long)tabelasMigradas; LogaMensagem?.Invoke($"Tabela {tabela} migrada em {tempoGasto}"); LogaMensagem?.Invoke($"Tabelas migradas: {tabelasMigradas:N0}/{TotalTabelas:N0}({tabelasMigradas / TotalTabelas:P})"); LogaMensagem?.Invoke("--------------------------------------------------------------------------------------------------------------------"); }
private void ExecutaMigracao() { ReorganizarIndicesHabilitado = MigracaoNaoIniciada = false; LogaMensagem?.Invoke("Iniciando migração"); Stopwatch stopwatch; using (var conexaoFonte = new FbConnection(ConnectionStringFonte)) using (var conexaoDestino = new SqlConnection(ConnectionStringDestino)) { conexaoFonte.Open(); conexaoDestino.Open(); migrador = new Migrador(new ExtratorMetadadosTabelaFirebird(conexaoFonte), new ExtratorMetadadosTabelaMsSqlServer(conexaoDestino)); migrador.OnMessage += LogaMensagem; migrador.OnError += message => LogaMensagem?.Invoke($"Erro na migração da tabela {TabelaEmMigracao}: {message}"); migrador.OnIniciarMigracao += totalTabelas => TotalTabelas = totalTabelas; migrador.OnInicioMigracaoTabela += Migrador_OnInicioMigracaoTabela; migrador.OnFimMigracaoTabela += Migrador_OnFimMigracaoTabela; migrador.OnRegistrosMigrados += Migrador_OnRegistrosMigrados; stopwatch = Stopwatch.StartNew(); Task.Factory.StartNew(() => AtualizaTempoDecorrido(stopwatch), _cancellationTokenSource.Token, TaskCreationOptions.LongRunning, TaskScheduler.Current); migrador.Migrar(conexaoFonte, conexaoDestino); stopwatch.Stop(); } LogaMensagem?.Invoke($"Migração realizada em {stopwatch.Elapsed}"); _cancellationTokenSource.Cancel(); ReorganizarIndicesHabilitado = true; }
private void Migrador_OnRegistrosMigrados(long registrosMigrados) { RegistrosMigradosNaTabelaAtual = registrosMigrados; LogaMensagem?.Invoke($"Migrado {registrosMigrados:N0}/{TotalRegistrosNaTabelaAtual:N0} linhas da tabela {TabelaEmMigracao}"); }