public ActionResult Alterar(int? id)
        {
            if (!id.HasValue)
            {
                throw new ArgumentNullException("Parâmetro id não pode ser nulo.");
            }

            Servico servicoEmAlteracao = Contexto.Servicos.SingleOrDefault(s => s.Id == id.Value);

            var viewModel = new ServicoAlterarViewModel
            {
                Id = servicoEmAlteracao.Id,
                Descricao = servicoEmAlteracao.Descricao,
                Empresa = servicoEmAlteracao.Empresa,
                ReferenciaServico = servicoEmAlteracao.ReferenciaServico,
                TipoServico = servicoEmAlteracao.TipoServico,
                ServicoRelacionado = servicoEmAlteracao.Pai,
                Segmento = servicoEmAlteracao.Segmento,
                TodosOsSegmentos = Contexto.Segmentos.ToList(),
                TodasAsReferencias = Enum.GetValues(typeof(ReferenciaServico)).Cast<ReferenciaServico>(),
                TodosOsServicosRelacionados = Contexto.Servicos.ToList()
            };

            return View(viewModel);
        }
        public ActionResult Alterar(ServicoAlterarViewModel viewModel)
        {
            try
            {
                Servico servicoAlterado = Conversor.ParaServico(viewModel);

                Servico.ValidarAlteracao(servicoAlterado);
                Servico.AlterarServico(servicoAlterado);

                Contexto.SaveChanges();

                return View();
            }
            catch (RegrasDeNegocioException e)
            {
                e.CopiarPara(ModelState);
                return View(viewModel);
            }
        }