Fundo:
Eu tenho um objeto que tem um número de propriedadesque são outros objetos. Em Salvar do objeto principal, insiro um registro no banco de dados e, em seguida, chamo o método Save dos sub objetos. O risco atual neste modelo é que, se o objeto principal for salvo no banco de dados, mas um dos subobjetos não for, os dados não refletirão um estado preciso.
Meu aplicativo .NET 4.0 usa o Enterprise Library 5.0 e os dados são armazenados em um banco de dados do SQL Server 2008. Gostaria de implementar o suporte a transações para que todos os objetos sejam salvos quando todas as salvações forem bem-sucedidas ou revertidas em caso de falha.
Questão:
Achei um artigo bom mas datado sobre o suporte a Transações no .NET 2.0 vs .NET 1.0 / 1.1, mas queria saber qual é a melhor prática atual para implementar o suporte a transações.
Respostas:
1 para resposta № 1Acabei indo com System.Transactions.TransactionScope conforme descrito no artigo mencionado acima. Enterprise Library 3.0 e superior procura Transaction.Current ao se conectar ao banco de dados. Você não precisa passar informações de transação explicitamente.
using(TransactionScope scope = new TransactionScope())
{
/* Perform transactional work here */
//No errors-commit transaction
scope.Complete();
}