事务处理模式是为参与事务处理的每个组件而设置的
它用来告知MTS说组件所做出的更改是否应该被忽略
当事务处理创建新对象的时候MTS会查看两个信息源来确定事务处理的模式首先它要确定对象的创建者是否正在一个已经存在的事务处理里运行其次它要使用组件的事务处理模式
在Visual Basic NET里可以从SystemEnterpriseServicesServicedComponent里衍生出一个类这类能够参与事务处理如果SystemEnterpriseServices这个命名空间不在你的项目里你就要把它添加到项目的参照里
Public Class MTSTest
Inherits SystemEnterpriseServicesServicedComponent
End Class
要控制用于类的事务处理模式你需要对类使用TransactionAttributeTransaction(事务处理)属性的构造器能够接受TransactionOption这个类型的枚举参数(enumerated parameter)TransactionAttribute可能的值有
Disabled——对象会忽略事务处理
NotSupported——对象不能在事务处理的范围内运行对象的创建不需要事务处理的存在而不论其创建者是否运行在事务处理里
Supported——对象需要或者不需要事务处理都可以运行如果对象是在一个活动的事务处理里创建的那么它就要在这个已存在事务处理里运行如果对象不是在活动的事务处理里创建的那么对象不需要事务处理也可以运行
Required——对象需要一个事务处理如果已经存在一个活动的事务处理那么对象就要在这个事务处理里运行如果不存在活动的事务处理就要开始一个新的事务处理这个值是Transaction属性缺省的值
RequiresNew——对象需要一个事务处理但是新的事务处理总是应每个请求的需要而开始即使已经存在活动的事务处理
下面的代码显示了如何声明一个对象需要事务处理
(EnterpriseServices.TransactionOption.Required)> _
Public Class MTSTest
Inherits System.EnterpriseServices.ServicedComponent
End Class