internal void Excluir(int titulo, BancoDeDados banco = null)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                bancoDeDados.IniciarTransacao();

                #region Atualizar o tid para a nova ação

                Comando comando = bancoDeDados.CriarComando(@"update {0}esp_cad_ambiental_rural c set c.tid = :tid where c.titulo = :titulo", EsquemaBanco);
                comando.AdicionarParametroEntrada("titulo", titulo, DbType.Int32);
                comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual());
                bancoDeDados.ExecutarNonQuery(comando);

                #endregion

                #region Histórico

                Historico.Gerar(titulo, eHistoricoArtefatoEspecificidade.cadastroambientalruraltitulo, eHistoricoAcao.excluir, bancoDeDados);

                #endregion

                #region Consulta

                Consulta.Deletar(titulo, eHistoricoArtefato.carsolicitacaotitulo, bancoDeDados);

                #endregion

                #region Apaga os dados da especificidade

                comando = bancoDeDados.CriarComando(@"delete from {0}esp_cad_ambiental_rural e where e.titulo = :titulo", EsquemaBanco);

                comando.AdicionarParametroEntrada("titulo", titulo, DbType.Int32);

                bancoDeDados.ExecutarNonQuery(comando);

                bancoDeDados.Commit();

                #endregion
            }
        }
        internal void Salvar(CadastroAmbientalRuralTitulo cadastro, BancoDeDados banco = null)
        {
            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                #region Título de Cadastro Ambiental Rural

                eHistoricoAcao acao;
                object         id;

                bancoDeDados.IniciarTransacao();
                //Verifica a existencia da especificidade
                Comando comando = bancoDeDados.CriarComando(@"select e.id from {0}esp_cad_ambiental_rural e where e.titulo = :titulo", EsquemaBanco);
                comando.AdicionarParametroEntrada("titulo", cadastro.Titulo.Id, DbType.Int32);
                id = bancoDeDados.ExecutarScalar(comando);

                if (id != null && !Convert.IsDBNull(id))
                {
                    comando = bancoDeDados.CriarComando(@"update {0}esp_cad_ambiental_rural e set e.titulo = :titulo, e.protocolo = :protocolo, 
														e.destinatario = :destinatario, e.matricula = :matricula, e.tid = :tid where e.titulo = :titulo"                                                        , EsquemaBanco);

                    acao        = eHistoricoAcao.atualizar;
                    cadastro.Id = Convert.ToInt32(id);
                }
                else
                {
                    comando = bancoDeDados.CriarComando(@"insert into {0}esp_cad_ambiental_rural e (id, titulo, protocolo, destinatario, matricula, tid) 
														values ({0}seq_esp_cad_ambiental_rural.nextval, :titulo, :protocolo, :destinatario, :matricula, :tid) returning e.id into :id"                                                        , EsquemaBanco);
                    acao    = eHistoricoAcao.criar;
                    comando.AdicionarParametroSaida("id", DbType.Int32);
                }

                comando.AdicionarParametroEntrada("titulo", cadastro.Titulo.Id, DbType.Int32);
                comando.AdicionarParametroEntrada("protocolo", cadastro.ProtocoloReq.Id, DbType.Int32);
                comando.AdicionarParametroEntrada("destinatario", cadastro.Destinatario, DbType.Int32);
                comando.AdicionarParametroEntrada("matricula", cadastro.Matricula, DbType.String);
                comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual());

                bancoDeDados.ExecutarNonQuery(comando);

                if (id == null || Convert.IsDBNull(id))
                {
                    cadastro    = cadastro ?? new CadastroAmbientalRuralTitulo();
                    cadastro.Id = Convert.ToInt32(comando.ObterValorParametro("id"));
                }

                #endregion

                #region Histórico

                Historico.Gerar(Convert.ToInt32(cadastro.Titulo.Id), eHistoricoArtefatoEspecificidade.cadastroambientalruraltitulo, acao, bancoDeDados);

                #endregion

                #region Consulta

                Consulta.Gerar(cadastro.Titulo.Id, eHistoricoArtefato.carsolicitacaotitulo, bancoDeDados);

                #endregion

                bancoDeDados.Commit();
            }
        }