关于三层结构中COM++组件的Transaction问题(100分)

  • 主题发起人 主题发起人 landina
  • 开始时间 开始时间
L

landina

Unregistered / Unconfirmed
GUEST, unregistred user!
问题:
在Com组件中有个选项为:Call Synchronization和Transaction Model.我将第一个选项
选择为Required,第二个选项选择为Requires a Transaction.
在提交数据时如果出错,数据库不能Rollback.

请问:如何将Com++的Transaction Model和数据库的Transaction结合使用.如果不能的话,那
COM++中的Transaction Model是做什么用的???
 
选择Requires a Transaction表示当用户调用这个COM+组件时,COM+环境会为这个组件建立一个新的事务上下文,这和数据库的事务不是一回事。
当你的COM+组件提交数据时如果出错,应该告诉事务上下文,只要调用COM+组件的SetAbort方法就可以。这样一来,处于同一个事务上下文的所有COM+组件都会Rollback。
如果数据提交成功,应该调用SetComplete,不调用这个方法也可以,因为在默认情况下,COM+组件的事务状态设置为EnableCommite。
当处于同一事务上下文的所有COM+组件对象都调用了SetComplete时,该事务上下文才会真正的向数据库提交数据。
 
当建立Com+时选择的事务模式为Requires a Transaction,Com+会根据客户的的请求建立相应的事务,不仅仅时数据库,还会有系统资源等事务.
成功SetComplete.
回滚SetAbort
 
后退
顶部