一种是TransactionScope的自动管理,所有逻辑只要包含在TransactionScope范围内,会被自动注册到一个Transaction,最终一次提交或回滚。
第二种就是用户自己创建ICommittableTransaction, 自己规定什么时候调用Commit或者Rollback。
第一种TransactionScope方式,已经在TransactionScope简介中介绍了。
说说第二种,手动明确管理Transaction.
代码例:
// Create the Transaction
ICommittableTransaction oTran = Transaction.Create();
// Open a connection to SQL Server 2005
using (SqlConnection oCn1 = new SqlConnection(this.sCn1))
{
SqlCommand oCmd1 = new SqlCommand(this.sSQL, oCn1);
oCn1.Open();
// The connection is not yet enlisted in the transaction scope
oCn1.EnlistTransaction();
// Now the connection is enlisted in the transaction scope
oCmd1.ExecuteNonQuery((ITransaction)oTran);
oCn1.Close();
}
// Tell the transaction to commit
oTran.Commit();
ICommittableTransaction,TransactionScope都在在.Net2.0的System.Transactions命名空间下。
注意ICommittableTransaction是管理业务Transaction用的,
有别于具体的某个DBConnection.BeginTransaction得到的DBTransaction.
没有评论:
发表评论