none
Controle de Escopos RRS feed

  • Pergunta

  • Fala galera!

    Estou montando uma função (Web API) que popula diversas tabelas em base MSSQL. Porém, em caso de erro, eu gostaria que todas as ações de INSERT ou UPDATE fossem desfeitas (ROLLBACK). Para isso parti para o uso do TransactionScope. Porém, mesmo usando IsolationLevel.ReadUncommitted ele tranca as tabelas para leitura ou escrita. Somente as liberando quando o escopo é terminado. Há um grande problema que a base é lida também por outras aplicações, que não utilizam NOLOCK em comandos SELECT.

    Pois bem. Já tentei de diversas maneiras, inclusive aplicando um SQL INJECTION ExecuteSqlCommand("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED");

    Já usei BeginTransaction ao invés de scope e o resultado é o mesmo. Base trancada enquanto a operação não termina.

    Valeu pela ajuda!

    Já tentei de algumas formas:   

    using (Entities db = new Entities ())
    {
    	using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required,
    		new TransactionOptions() { IsolationLevel = IsolationLevel.ReadUncommitted }))
    	{
    		try
    		{
    			//Faça algo
    			scope.Complete();
    		}
    		catch(Expetion ex){
    			//Faça algo
    		}
    	}
    }
    

    E assim:

    using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required,
    	new TransactionOptions() { IsolationLevel = IsolationLevel.ReadUncommitted }))using (Entities db = new Entities ())
    {		
    	try
    	{
    		using (Entities db = new Entities ())
    		{
    		     //Faça algo				
    		}
    		scope.Complete();
    	}
    	catch(Expetion ex){
    	    //Faça algo
    	}
    }


    quarta-feira, 16 de maio de 2018 20:10

Respostas

  • Boa tarde, Nissandro Ribeiro. Tudo bem?

    Obrigado por usar o fórum MSDN

    Essa seria uma questão de "How to/Customização" ou "Break Fix/Erro"?

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 17 de maio de 2018 16:57
    Moderador

Todas as Respostas

  • Boa tarde, Nissandro Ribeiro. Tudo bem?

    Obrigado por usar o fórum MSDN

    Essa seria uma questão de "How to/Customização" ou "Break Fix/Erro"?

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 17 de maio de 2018 16:57
    Moderador
  • Boa tarde,

    Por falta de retorno esssa thread está encerrada.

    Se necessário, favor abrir uma nova thread.

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 4 de junho de 2018 19:18
    Moderador