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();
}
}