A Simpler TransactionScope
In .Net 3.5 I can write a transactional code block as follows:
transacted(()=>
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command1 = new SqlCommand(commandString1, connection);
command1.ExecuteNonQuery();
SqlCommand command2 = new SqlCommand(commandString2, connection);
command2.ExecuteNonQuery();
}
});
No need for using and no need to remember to call Complete at the end of the block.
To enable this I need to write just a few lines of code:
delegate void TransactedCodeDelegate();
void transacted(TransactedCodeDelegate txCode)
{
using (TransactionScope ts = new TransactionScope())
{
txCode();
ts.Complete();
}
}
Comments
Anonymous
March 24, 2008
PingBack from http://msdnrss.thecoderblogs.com/2008/03/24/a-simpler-transactionscope/Anonymous
May 02, 2008
And yes, you can do this in C# 2.0 too using "delegate()" instead of "()=>".Anonymous
May 04, 2008
If you read the documentation for TransactionScope , you will find: "If no exception occurs within the