I would like to configure WCF service operations to accept a transaction if my client sends one, but not to create one if none is sent. I think this would be similar to the Supported transaction attribute in COM+.
Does anyone know whether this can be accomplished with WCF transactions?
I am trying to accomplish this all by using the WCF transaction programming model (e.g. TransactionFlowAttribute and TransactionScopeRequired on service operations) rather than using the System.Transactions explicit transaction programming model.
Here s an example of why I think I want to be able to do this:
ServiceA implements a high-level business operation which invokes two data services. An operation in Service B does a single database update and an operation in Service C does two database updates.
ServiceA ----> ServiceB ----> <1 DB update>
|
V Service C ----> <2 DB updates>
ServiceC s 2 database updates need to be performed within a transaction with its root on ServiceC. Service B s single database update does NOT need to take place within a transaction. However, ServiceA defines a transaction that requires ServiceB and ServiceC s database updates two happen as an atomic unit of work.
My question is how I can configure ServiceB so that when it s invoked by ServiceA it enlists in that transaction. However, when ServiceB is invoked directly rather than through Service A it does not need to run within a transaction because it s only doing one database update.
Thanks,
David Madrian