public void Save(perfil entity)
 {
     DataModel.Entry(entity).State = entity.id_perfil == 0 ?
        EntityState.Added :
        EntityState.Modified;
     DataModel.SaveChanges();
 }
 // /Perfil/List
 public ActionResult List(perfil entity, String message)
 {
     ViewData["message"] = message;
     if (string.IsNullOrEmpty(entity.nome_perfil))
     {
         return View(PerfilRepository.GetAll());
     }
     else
     {
         return View(PerfilRepository.GetAllByCriteria(entity.nome_perfil));
     }
 }
        public ActionResult Create(perfil perfil)
        {
            try
            {
                if (validate(perfil))
                    return View(perfil);
                PerfilRepository.Create(perfil);

                return RedirectToAction("List", new { message = "Dados cadastrados com sucesso!" });
            }
            catch
            {
                return View(perfil);
            }
        }
 public void Delete(perfil entity)
 {
     DataModel.perfil.Remove(entity);
     DataModel.SaveChanges();
 }
 public void Edit(perfil entity)
 {
     Save(entity);
 }
 public void Create(perfil entity)
 {
     Save(entity);
 }
 public ActionResult Edit(int id, perfil perfil)
 {
     try
     {
         if (validate(perfil))
             return View(perfil);
         PerfilRepository.Edit(perfil);
         return RedirectToAction("List", new { message = "Dados editados com sucesso!" });
     }
     catch
     {
         return View();
     }
 }
        public bool validate(perfil entity)
        {
            bool retorno = false;

            if (string.IsNullOrEmpty(entity.nome_perfil))
            {
                ModelState.AddModelError("nome_perfil", "Campo obrigatório");
                retorno = true;
            }
            if (string.IsNullOrEmpty(entity.descricao_perfil))
            {
                ModelState.AddModelError("descricao_perfil", "Campo obrigatório");
                retorno = true;
            }

            return retorno;
        }
        public ActionResult Delete(int id, perfil perfil)
        {
            try
            {
                perfil = PerfilRepository.GetOne(id);
                PerfilRepository.Delete(perfil);

                return RedirectToAction("List", new { message = "Dados excluídos com sucesso!" });
            }
            catch
            {
                return View();
            }
        }