Usuário com melhor resposta
Controle de Escopos

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 } }
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.
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 4 de junho de 2018 19:17
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.
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 4 de junho de 2018 19:17
-
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.