private void UpdateEntidadeProfessores(string[] selectedProfessores, Entidade entidadeToUpdate) { if (selectedProfessores == null) { entidadeToUpdate.ProfessorEntidade = new List <ProfessorEntidade>(); return; } var selectedProfessoresHS = new HashSet <string>(selectedProfessores); var entidadeProfessores = new HashSet <long> (entidadeToUpdate.ProfessorEntidade.Select(c => c.Professor.Id)); foreach (var professor in _context.Professores) { if (selectedProfessoresHS.Contains(professor.Id.ToString())) { if (!entidadeProfessores.Contains(professor.Id)) { entidadeToUpdate.ProfessorEntidade.Add(new ProfessorEntidade { EntidadeID = entidadeToUpdate.Id, ProfessorID = professor.Id }); } } else { if (entidadeProfessores.Contains(professor.Id)) { ProfessorEntidade professorToRemove = entidadeToUpdate.ProfessorEntidade.FirstOrDefault(i => i.ProfessorID == professor.Id); _context.Remove(professorToRemove); } } } }
public async Task <IActionResult> Create([Bind("Id,Nome,CNPJ,Telefone1,Telefone2,Rua,Numero,Bairro,Cidade,Estado,CEP")] Entidade entidade, string[] selectedProfessores) { if (selectedProfessores != null) { entidade.ProfessorEntidade = new List <ProfessorEntidade>(); foreach (var professor in selectedProfessores) { var professorToAdd = new ProfessorEntidade { EntidadeID = entidade.Id, ProfessorID = int.Parse(professor) }; entidade.ProfessorEntidade.Add(professorToAdd); } } if (ModelState.IsValid) { _context.Add(entidade); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } PopulateAssignedProfessorData(entidade); return(View(entidade)); }