Exemplo n.º 1
0
        /// <summary>
        /// Identifica se um escopo precisa ser mudado e também se ele pode ser mudado
        /// </summary>
        /// <param name="opcaoEscopo"></param>
        /// <param name="nomeConfigConexao"></param>
        /// <param name="precisaMudarEscopo"></param>
        private void VerificarMudancaEscopo(OpcaoEscopo opcaoEscopo, string nomeConfigConexao, out bool precisaMudarEscopo)
        {
            precisaMudarEscopo = PrecisaMudarEscopo(opcaoEscopo);

            if (!precisaMudarEscopo)
            {
                // Se nao instanciou novo Escopo e usou o existente entao suprime finalizador
                GC.SuppressFinalize(this);
                if (_Atual != null)
                {
                    if (ContextoAcessoDado.ConnectionStringSettingName != nomeConfigConexao)
                        throw new InvalidOperationException("Para conexoes diferentes um novo escopo é necessario");
                    Atual.ContadorEscopo += 1;
                }
            }
        }
Exemplo n.º 2
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);
            }
        }
Exemplo n.º 3
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);
 }
Exemplo n.º 4
0
 /// <summary>
 /// Indica se <see cref="Atual"/> precisa ser mudado para um novo escopo
 /// </summary>
 /// <param name="opcaoEscopo"></param>
 /// <returns>True se um novo escopo precisa ser criado para <see cref="Atual"/></returns>
 private static bool PrecisaMudarEscopo(OpcaoEscopo opcaoEscopo)
 {
     bool precisaMudarEscopo;
     switch (opcaoEscopo)
     {
         case OpcaoEscopo.Requerido:
             precisaMudarEscopo = (_Atual == null);
             break;
         case OpcaoEscopo.RequerNovo:
             precisaMudarEscopo = true;
             break;
         default:
             throw new ArgumentOutOfRangeException("opção");
     }
     return precisaMudarEscopo;
 }
Exemplo n.º 5
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="opcaoTransacao">Configura a forma como esse escopo vai participar de uma transação</param>
 public Escopo(OpcaoEscopo opcaoEscopo, OpcaoTransacao opcaoTransacao)
     : this(opcaoEscopo, ContextoAcessoDado.NOME_CONEXAO_GERAL, opcaoTransacao)
 {
 }