public bool VerificarSeJaExisteNoSalvamento(Categoria categoria)
 {
     try
     {
         return _banco.Categoria.FirstOrDefault(c => c.Nome == categoria.Nome) != null ? Existe.RetornaErro("Categoria já existe.") : NaoExiste;
     }
     catch (CustomException erro)
     {
         throw new CustomException(erro.Message);
     }
     catch (Exception erro)
     {
         throw new Exception(erro.Message);
     }
 }
 public int Cadastrar(Categoria categoria)
 {
     try
     {
         int retorno = Insucesso;
         if (new CategoriaBO().VerificarSeJaExisteNoSalvamento(categoria: categoria) == NaoExiste)
         {
             _banco.Entry(categoria).State = EntityState.Added;
             retorno = _banco.SaveChanges() == Sucesso ? Sucesso : Insucesso;
         }
         return retorno;
     }
     catch (CustomException erro)
     {
         throw new CustomException(erro.Message);
     }
     catch (Exception erro)
     {
         throw new Exception(erro.Message);
     }
 }
        public bool VerificarSeJaExisteNaAlteracao(Categoria categoria)
        {
            try
            {
                bool retorno = NaoExiste;
                if (_banco.Categoria.Find(categoria.ID).Nome != categoria.Nome)
                {
                    if (_banco.Categoria.Any(c=>c.Nome == categoria.Nome))
                        retorno = Existe.RetornaErro("Categoria já existe.");
                }
                return retorno;
            }
            catch (CustomException erro)
            {
                throw new CustomException(erro.Message);
            }
            catch (Exception erro)
            {
                throw new Exception(erro.Message);
            }

        }
 private void CarregaComponentes(Categoria categoria, EnumTipoOperacao tipoOperacao)
 {
     _categoria = categoria;
     _tipoOperacao = tipoOperacao;
 }
 public frmCadastrarCategoria(Categoria categoria, EnumTipoOperacao tipoOperacao)
 {
     CarregaComponentes(categoria, tipoOperacao);
     InitializeComponent();
 }
        public int Deletar(Categoria categoria)
        {

            try
            {
                if (_banco.Produto.FirstOrDefault(c => c.Categoria == categoria.ID) == null)
                {
                    _banco.Entry(categoria).State = EntityState.Deleted;
                    return _banco.SaveChanges() == Sucesso ? Sucesso : Insucesso;
                }
                else
                    throw new CustomException("Não é possível deletar uma Categoria associada a um produto.");
            }
            catch (CustomException erro)
            {
                throw new CustomException(erro.Message);
            }
            catch (Exception erro)
            {
                throw new Exception(erro.Message);
            }

        }