Beispiel #1
0
 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");
 }
Beispiel #2
0
 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("--------------------------------------------------------------------------------------------------------------------");
 }
Beispiel #3
0
        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;
        }
Beispiel #4
0
 private void Migrador_OnRegistrosMigrados(long registrosMigrados)
 {
     RegistrosMigradosNaTabelaAtual = registrosMigrados;
     LogaMensagem?.Invoke($"Migrado {registrosMigrados:N0}/{TotalRegistrosNaTabelaAtual:N0} linhas da tabela {TabelaEmMigracao}");
 }