public async Task <Curriculo> Atualizar(Curriculo entidade) { try { var disciplinasRemover = await _contexto.CurriculoDisciplina .AsNoTracking() .Where(lnq => lnq.CodigoCurriculo == entidade.Codigo) .ToListAsync(); _contexto.CurriculoDisciplina.RemoveRange(disciplinasRemover); await _contexto.SaveChangesAsync(); foreach (var disciplina in entidade.Disciplinas) { var preRequisitos = disciplina.CurriculoDisciplinaPreRequisito; var disciplinaAdicionar = new CurriculoDisciplina { AulasSemanaisPratica = disciplina.AulasSemanaisPratica, AulasSemanaisTeorica = disciplina.AulasSemanaisTeorica, CodigoCurriculo = entidade.Codigo, CodigoDisciplina = disciplina.CodigoDisciplina, Periodo = disciplina.Periodo, Credito = disciplina.Credito }; _contexto.CurriculoDisciplina.Add(disciplinaAdicionar); _contexto.SaveChanges(); foreach (var preRequisito in preRequisitos) { preRequisito.CodigoDisciplina = preRequisito.CodigoDisciplina; preRequisito.CodigoCurriculoDisciplina = disciplinaAdicionar.Codigo; _contexto.CurriculoDisciplinaPreRequisito.Add(preRequisito); _contexto.SaveChanges(); } ; } var curriculoAtualizar = await _contexto.Curriculo.FirstOrDefaultAsync(lnq => lnq.Codigo == entidade.Codigo); curriculoAtualizar.Ano = entidade.Ano; curriculoAtualizar.CodigoCurso = entidade.CodigoCurso; curriculoAtualizar.Disciplinas = curriculoAtualizar.Disciplinas.OrderBy(lnq => lnq.Periodo).ToList(); await _contexto.SaveChangesAsync(); return(curriculoAtualizar); } catch (Exception e) { throw e; } }