예제 #1
0
 /// <summary>
 /// Inicia um novo escopo de execução ou participa de um existente
 /// </summary>
 /// <param name="nomeConfigConexao">Nome da conexao em connectionSettings</param>
 /// <param name="opcaoTransacao">Opcao da transacao. Se for <see cref="OpcaoTransacao.Requerido"/> 
 /// e ja existir um escopo, um novo escopo é criado de forma transparente</param>
 public Escopo(string nomeConfigConexao, OpcaoTransacao opcaoTransacao)
 {
     if (!OpcaoTransacaoRequerNovoEscopo(opcaoTransacao))
         InicializarEscopo(OpcaoEscopo.Requerido, nomeConfigConexao, opcaoTransacao);
     else
         // Se precisar mudo o comportamento padrão de inicializacao
         InicializarEscopo(OpcaoEscopo.RequerNovo, nomeConfigConexao, opcaoTransacao);
 }
예제 #2
0
 /// <summary>
 /// Inicia um novo escopo de execução ou participa de um existente
 /// </summary>
 /// <param name="opcaoTransacao">Opcao da transacao. Se for <see cref="OpcaoTransacao.Requerido"/> 
 /// e ja existir um escopo, um novo escopo é criado de forma transparente</param>
 public Escopo(OpcaoTransacao opcaoTransacao)
     : this(ContextoAcessoDado.NOME_CONEXAO_GERAL, opcaoTransacao)
 {
 }
예제 #3
0
 /// <summary>
 /// Identifica se com a <paramref name="opcaoTransacao"/> informado um novo escopo deve ser criado
 /// para delimitar a vida util da transacao.
 /// </summary>
 /// <remarks>
 /// Se <see cref="OpcaoTransacao.Requerido"/> for informado e <see cref="Escopo.Atual"/> nao possuir
 /// uma transacao então um novo escopo deve ser criado para que ao fim dele o commit ou rollback ocorra.
 /// </remarks>
 /// <param name="opcaoTransacao"></param>
 /// <returns></returns>
 private bool OpcaoTransacaoRequerNovoEscopo(OpcaoTransacao opcaoTransacao)
 {
     // Se nao existir nenhum atualmente entao nao preciso fazer nada de diferente
     // na inicializacao
     if (Escopo.Atual == null)
         return false;
     else
         return opcaoTransacao == OpcaoTransacao.Requerido &&
             Escopo.Atual.ContextoAcessoDado.Transaction == null;
 }
예제 #4
0
        private void InicializarEscopo(OpcaoEscopo opcaoEscopo, string nomeConfigConexao, OpcaoTransacao opcaoTransacao)
        {
            // nos precisamos mudar _Atual?
            bool precisaMudarEscopo;
            VerificarMudancaEscopo(opcaoEscopo, nomeConfigConexao, out precisaMudarEscopo);

            //this.InicializarEscopo(opcaoEscopo, );
            if (precisaMudarEscopo)
            {
                // Inicializando apenas se um novo escopo vai ser criado
                _ContextoAcessoDado = new ContextoAcessoDado(nomeConfigConexao);
                _ContextoAutenticacao = new ContextoAutenticacao();
                AtribuirEscopoAtual();
                // Uma transacao nunca é iniciada em um escopo que nao inciou transacional
                ConfigurarTransacao(opcaoTransacao);
            }
        }
예제 #5
0
 /// <summary>
 /// Inicializa propriedade <see cref="Acontep.Dado.ContextoAcessoDado.Transaction"/>
 /// </summary>
 /// <param name="opcaoTransacao"></param>
 private void ConfigurarTransacao(OpcaoTransacao opcaoTransacao)
 {
     if (opcaoTransacao == OpcaoTransacao.Requerido)
     {
         // Assume que se chegou aqui nao existe transacao
         ContextoAcessoDado.Transaction = ContextoAcessoDado.Connection.BeginTransaction();
     }
 }
예제 #6
0
 /// <summary>
 /// Inicia um novo escopo de execução ou participa de um existente
 /// </summary>
 /// <exception cref="InvalidOperationException"><see cref="OpcaoTransacao.Requerido"/> exige <see cref="OpcaoEscopo.Requerido"/></exception>
 /// se um escopo ja existir sem uma transação ativa
 /// <param name="opcaoEscopo">Configura a forma como esse escopo vai participar de um ja existente</param>
 /// <param name="nomeConfigConexao">Nome da configuração de conexao em connectionStrings do arquivo de configuracao da aplicacao</param>
 /// <param name="opcaoTransacao">Configura a forma como esse escopo vai participar de uma transação</param>
 public Escopo(OpcaoEscopo opcaoEscopo, string nomeConfigConexao, OpcaoTransacao opcaoTransacao)
 {
     // Se o usuario informou explicitamente opcoes de escopo e de transacao provoca erro
     if (OpcaoTransacaoRequerNovoEscopo(opcaoTransacao) && opcaoEscopo == OpcaoEscopo.Requerido)
         throw new InvalidOperationException("Erro Transação Requer Novo Escopo");
     InicializarEscopo(opcaoEscopo, nomeConfigConexao, opcaoTransacao);
 }