private void CompararECriarComparacoes(ComparacaoBases comparacaoBases) { var contexto = new DBMigrationCompareSimilarDBsContext(); DateTime dataInicio = DateTime.Now; BaseLegada baseAlvo = contexto.BaseLegada.Include(bl => bl.BaseLegadaGrupoNavigation).FirstOrDefault(bl => bl.Id == comparacaoBases.BaseAlvo); BaseLegada baseFonte = contexto.BaseLegada.Find(comparacaoBases.BaseFonte); string tempPath = Path.GetTempPath(); string prefixo = $"{tempPath}Compare_{baseFonte.Nome}_{baseAlvo.Nome}"; string xmlOutPutFile = $"{prefixo}_out.xml"; try { contexto.ComparacaoBasesElementos.RemoveRange(contexto.ComparacaoBasesElementos.Where(cbe => cbe.ComparacaoBases == comparacaoBases.Id)); GerarArquivoComparacaoSQL(baseFonte.Nome, baseAlvo.Nome, xmlOutPutFile, baseAlvo.BaseLegadaGrupoNavigation.ConnectionStringLegadas); comparacaoBases = ExtrairInformacoesComparacaoDeXML(xmlOutPutFile, comparacaoBases); // Exclui os elementos da comparação, se existir, para refazer a comparação existente. comparacaoBases.StatusComparacao = StatusComparacao.Concluida; comparacaoBases.DataComparacao = DateTime.Now; } catch (Exception ex) { comparacaoBases.StatusComparacao = StatusComparacao.Falha; comparacaoBases.MensagemFalha = ex.Message; } comparacaoBases.TempoComparacaoEmMinutos = (DateTime.Now - dataInicio).TotalMinutes; lock (lockObject) { contexto.ComparacaoBases.Update(comparacaoBases); _ = contexto.SaveChangesAsync(); } }
public async Task <IActionResult> Edit(long id, [Bind("Id,Nome,StatusMigracao,LinkRespostorio,Tamanho,DataUltimaEstatistica")] BaseLegada baseLegadaView) { if (id != baseLegadaView.Id) { return(NotFound()); } if (ModelState.IsValid) { try { BaseLegada baseLegada = _context.BaseLegada.Find(id); baseLegada.StatusMigracao = baseLegadaView.StatusMigracao; baseLegada.LinkRespostorio = baseLegadaView.LinkRespostorio; _context.Update(baseLegada); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!BaseLegadaExists(baseLegadaView.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(baseLegadaView)); }