交易范围详细,具有如此多的交易及其优势

Jal*_*ama 1 c# asp.net

我一次性完成了20多笔交易.我想用事务范围.可能吗?如果可能,那么使用transacation范围类比简单事务有什么好处.

使用事务范围的最佳做法是什么?

Mar*_*ell 5

优点TransactionScope是:

  • 你不必传递一个事务(ADO.NET应该自动登记)
    • 这意味着您甚至可以使用a TransactionScope向现有的闭源代码添加事务(即不需要更改)
  • 一个TransactionScope可以(通过DTC)跨越多个资源(即多个数据库,或一个数据库和一个MSMQ服务器等)

但你为此付出一点点与速度位.基于连接的事务稍微快一点(不多),但只能跨越单个资源,需要手动附加到所有DAL代码.但是,如果您只与单个SQL2005/SQL2008实例通信,那么它可以使用"LTM" - 这意味着它不必涉及DTC(这是大多数性能成本来自的地方),除非它绝对需要.TransactionScope因此,许多操作只能完成与数据库的对话.

如果你想跨越20个操作,那么TransactionScope应该是理想的 - 它将节省您必须传递事务,并允许每个操作在本地管理它们的连接 - 制作高度可重用的代码.实际上,TransactionScope可以按照您期望的方式嵌套,因此您可以:

void Deposit(...) { /* uses TranScope to do a deposit */ }
void Debit(...) { /* uses TranScope to do a debit */ }
void Transfer(...) { /* uses a TranScope to span Debit/Deposit */ }
Run Code Online (Sandbox Code Playgroud)

要使用数据库事务执行此操作,您需要将连接事务对象传递给每个方法,这很快就会变得笨拙 - 特别是如果您需要编码以使用/不使用现有的打开事务(许多if(tran==null)"等").

有关更多信息,请参阅.net中的事务