//Persistir o objecto e salvar na base de dados
        private bool inserir(DetalheTipoCategoriaTitulo ODetalheTipoCategoriaTitulo)
        {
            ODetalheTipoCategoriaTitulo.setDefaultInsertValues <DetalheTipoCategoriaTitulo>();
            db.DetalheTipoCategoriaTitulo.Add(ODetalheTipoCategoriaTitulo);
            db.SaveChanges();

            return(ODetalheTipoCategoriaTitulo.id > 0);
        }
        //Verificar se deve-se atualizar um registro existente ou criar um novo
        public bool salvar(DetalheTipoCategoriaTitulo OTipoProduto)
        {
            OTipoProduto.TipoCategoria = null;

            if (OTipoProduto.id == 0)
            {
                return(this.inserir(OTipoProduto));
            }

            return(this.atualizar(OTipoProduto));
        }
        //Persistir o objecto e atualizar informações
        private bool atualizar(DetalheTipoCategoriaTitulo ODetalheTipoCategoriaTitulo)
        {
            ODetalheTipoCategoriaTitulo.setDefaultUpdateValues <DetalheTipoCategoriaTitulo>();

            //Localizar existentes no banco
            DetalheTipoCategoriaTitulo dbDetalheTipoCategoriaTitulo = this.carregar(ODetalheTipoCategoriaTitulo.id);

            if (dbDetalheTipoCategoriaTitulo == null)
            {
                return(false);
            }

            var TipoEntry = db.Entry(dbDetalheTipoCategoriaTitulo);

            TipoEntry.CurrentValues.SetValues(ODetalheTipoCategoriaTitulo);
            TipoEntry.ignoreFields <DetalheTipoCategoriaTitulo>();

            db.SaveChanges();
            return(ODetalheTipoCategoriaTitulo.id > 0);
        }