一种是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.
没有评论:
发表评论