优点TransactionScope是:
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中的事务
| 归档时间: |
|
| 查看次数: |
1869 次 |
| 最近记录: |