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

时间:2009-05-12 06:09:19

标签: c# asp.net

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

使用交易范围的最佳做法是什么?

1 个答案:

答案 0 :(得分:5)

TransactionScope的优点是:

  • 您不必传递事务(ADO.NET应自动登记)
    • 表示您甚至可以使用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 */ }

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

有关详细信息,请参阅Transactions in .net