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));
        }