设置“一致”和“完成”标志
通过调用 IObjectContext 或 IContextState 接口上的方法,可以设置“一致性”和“完成”标志。 这两个接口使用的策略差别很大。 IObjectContext 有四种方法,以唯一的组合将一致标志和完成标志绑定在一起;而 IContextState 有两种方法,允许单独设置每个标志。 IObjectContext 的方法也通过 ObjectContext 对象公开。
为了独立控制每个标志,IContextState 提供了一种将一致标志设置为 True 或 False 的方法,以及将完成标志设置为 True 或 False 的方法。 这些方法分别是 SetMyTransactionVote 和 SetDeactivateOnReturn。 IContextState 接口还包括检索每个标志的当前值的方法。
将 SetMyTransactionVote 方法值设置为 TxCommit 时,COM+ 将验证事务是否存在。 如果 COM+ 未检测到事务,则会生成可以在日志文件中捕获的错误。 例如,假设有人无意中将组件的事务属性配置为“不支持”,而你希望设置为“必需”。 通过设置 SetMyTransactionVote = TxCommit,可以识别冲突并采取措施。
下表描述了可用于设置一致性和完成标志的方法调用。
一致标志 | 完成标志 | IObjectContext 方法 | IContextState 方法 |
---|---|---|---|
True |
False |
EnableCommit |
SetMyTransactionVote txVote = TxCommit SetDeactivateOnReturn bDeactivate = False |
False |
False |
DisableCommit |
SetMyTransactionVote txVote = TxAbort SetDeactivateOnReturn bDeactivate = False |
False |
True |
SetAbort |
SetMyTransactionVote txVote = TxAbort SetDeactivateOnReturn bDeactivate = True |
True |
True |
SetComplete |
SetMyTransactionVote txVote = TxCommit SetDeactivateOnReturn bDeactivate = True |