我在这里找到了一个答案:
TransactionFlow(TransactionFlowOption.Mandatory) OperationBehavior(TransactionScopeRequired = true
我在这里仍然缺少的是,这两种独立的配置如何协同工作。
例如,如果我有这个:
[OperationBehavior(TransactionScopeRequired = true)]
而不是:
[TransactionFlow(TransactionFlowOption.Allowd)]
交易是否是强制性的/必需的?
答案 0 :(得分:1)
如果客户端有一个事务服务,则将它与TFO一起使用。仅在绑定允许的情况下允许它,并且客户端也在它的绑定中传播它。
TransactionSocepRequired = true且事务从客户端流出,服务的环境事务将被设置为客户端事务。
答案是:如果客户端没有设置事务,WCF将创建一个新事务作为环境事务。
这是包含组合的表格(信用Juval Lowy编程WCF服务手册):
+--------------------------+-----------------------+--------------------------+------------------+
| Binding transaction flow | TransactionFlowOption | TransactionScopeRequired | Transaction mode |
+--------------------------+-----------------------+--------------------------+------------------+
| False | Allowed | False | None |
| False | Allowed | True | Service |
| False | Not Allowed | False | None |
| False | Not Allowed | True | Service |
| True | Allowed | False | None |
| True | Allowed | False | None |
| True | Allowed | True | Client/Service |
| True | Mandatory | False | None |
| Tru | Mandatory | True | Client |
+--------------------------+-----------------------+--------------------------+------------------+