设置“一致”和“完成”标志

通过调用 IObjectContextIContextState 接口上的方法,可以设置“一致性”和“完成”标志。 这两个接口使用的策略差别很大。 IObjectContext 有四种方法,以唯一的组合将一致标志和完成标志绑定在一起;而 IContextState 有两种方法,允许单独设置每个标志。 IObjectContext 的方法也通过 ObjectContext 对象公开。

为了独立控制每个标志,IContextState 提供了一种将一致标志设置为 True 或 False 的方法,以及将完成标志设置为 True 或 False 的方法。 这些方法分别是 SetMyTransactionVoteSetDeactivateOnReturnIContextState 接口还包括检索每个标志的当前值的方法。

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

注意

在方法级别设置的 auto-done 属性会影响一致和完成标志的设置方式。 有关 auto-done 属性的详细信息,请参阅为方法启用自动完成设置完成位