Desenvolvimento - ASP. NET
Criando facilmente transacões com .Net 2.0
Nesse artigo o autor mostra como é fácil utilizarmos transações em aplicações com .Net 2.0.
por Moacir CasemiroNesse artigo irei mostrar como é fácil utilizarmos transações em aplicações com .Net 2.0 .
Uma das melhorias mais significativas no .NET 2.0 é a área de transações. Agora com uma única linha torna-se extremamente fácil suportar blocos transactional do código usando o conceito de
"ambient" transaction com o TransactionScope localizada no namespace System.Transactions.
Abaixo está um exemplo de como utilizar da melhor forma transações em nossas aplicações.
1 using (TransactionScope ts = new TransactionScope()) { 2 3 // Um "ambient" é colocado no contexto atual 4 DbProviderFactory provider; 5 provider = DbProviderFactories.GetFactory("System.Data.SqlClient"); 6 DbConnection conn = provider.CreateConnection(); 7 conn.ConnectionString = strConn; 8 9 // Primeira query. Sendo executada com sucesso 10 DbCommand dbcmd = conn.CreateCommand(); 11 dbcmd.Connection = conn; 12 dbcmd.CommandText = "DELETE Lojas"; 13 dbcmd.CommandType = CommandType.Text; 14 15 // Segunda query. Irá ocorrer um erro. 16 DbCommand dbcmd2 = conn.CreateCommand(); 17 dbcmd2.Connection = conn; 18 dbcmd2.CommandText = "DELETE Invalida"; 19 dbcmd2.CommandType = CommandType.Text; 20 21 conn.Open(); 22 23 try { 24 // Agora vamos deletar o conteudo da tabela Lojas da primeira query. 25 dbcmd.ExecuteNonQuery(); 26 27 // A segunda query irá tentar deletar o conteúdo de uma tabela não 28 existente , ocorrendo erro o ts.complete não irá ser executado. 29 dbcmd2.ExecuteNonQuery(); 30 //se todas as operações forem um sucesso então irá ocorrer o commit , 31 //na transação. 32 33 ts.Complete(); 34 35 } catch (DbException ex) { 36 37 // Tratamento de erro 38 39 } finally { 40 41 42 conn.Close(); 43 ts.Dispose(); 44 } 45 }Extremamente simples, não é? TransactionScope tomará cuidado de quase toda a área transactional neste bloco do código. Tudo que é requerido para cometer a transação deve chamar o método ts.Complete(). Observe que o objeto próprio da conexão está confinado dentro do espaço assim que ele participa automaticamente na transação. Você pode manipular o contexto da transação com Transaction.Current. Esteja ciente que isto não está limitado às operações com o SQL. Você pode criar a transação para dados-armazenamentos no Oracle, SQL Server, messaging de MSMQ e mesmo para operações com filesystem.
Conclusão
No nosso dia - dia sabemos da importância de estarmos sempre preocupados em estar utilizando transações em nossas aplicações de forma que nos garanta um melhor gerenciamento das querys executadas . E na nova versão do .Net veio de forma mais fácil e prática a utilização de transações .