Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

TransactionFlowOption Enum

Definition

Namespace:
System.ServiceModel
Assembly:
System.ServiceModel.dll

Important

Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.

An enumeration that is used with the TransactionFlowAttribute to specify the transaction flow policy for a service operation.

public enum class TransactionFlowOption
public enum TransactionFlowOption
type TransactionFlowOption = 
Public Enum TransactionFlowOption
Inheritance
TransactionFlowOption

Fields

Name Value Description
NotAllowed 0

A transaction should not be flowed. This is the default value.

Allowed 1

Transaction may be flowed.

Mandatory 2

Transaction must be flowed.

Examples

The following code example demonstrates the use of this enumeration together with the TransactionFlowOption class at the operation level.

using System;
using System.ServiceModel;
using System.Transactions;

namespace Microsoft.WCF.Documentation
{
 [ServiceContract(
 Namespace="http://microsoft.wcf.documentation",
 SessionMode=SessionMode.Required
 )]
 public interface IBehaviorService
 {
 [OperationContract]
 string TxWork(string message);
 }

 // Note: To use the TransactionIsolationLevel property, you
 // must add a reference to the System.Transactions.dll assembly.
 /* The following service implementation:
 * -- Processes messages on one thread at a time
 * -- Creates one service object per session
 * -- Releases the service object when the transaction commits
 */
 [ServiceBehavior(
 ConcurrencyMode=ConcurrencyMode.Single,
 InstanceContextMode=InstanceContextMode.PerSession,
 ReleaseServiceInstanceOnTransactionComplete=true
 )]
 public class BehaviorService : IBehaviorService, IDisposable
 {
 Guid myID;

 public BehaviorService()
 {
 myID = Guid.NewGuid();
 Console.WriteLine(
 "Object "
 + myID.ToString()
 + " created.");
 }

 /*
 * The following operation-level behaviors are specified:
 * -- The executing transaction is committed when
 * the operation completes without an
 * unhandled exception
 * -- Always executes under a flowed transaction.
 */
 [OperationBehavior(
 TransactionAutoComplete = true,
 TransactionScopeRequired = true
 )]
 [TransactionFlow(TransactionFlowOption.Mandatory)]
 public string TxWork(string message)
 {
 // Do some transactable work.
 Console.WriteLine("TxWork called with: " + message);
 // Display transaction information.

 TransactionInformation info = Transaction.Current.TransactionInformation;
 Console.WriteLine("The distributed tx ID: {0}.", info.DistributedIdentifier);
 Console.WriteLine("The tx status: {0}.", info.Status);
 return String.Format("Hello. This was object {0}.",myID.ToString()) ;
 }

 public void Dispose()
 {
 Console.WriteLine(
 "Service "
 + myID.ToString()
 + " is being recycled."
 );
 }
 }
}
Imports System.ServiceModel
Imports System.Transactions

Namespace Microsoft.WCF.Documentation
 <ServiceContract(Namespace:="http://microsoft.wcf.documentation", SessionMode:=SessionMode.Required)> _
 Public Interface IBehaviorService
 <OperationContract> _
 Function TxWork(ByVal message As String) As String
 End Interface

 ' Note: To use the TransactionIsolationLevel property, you 
 ' must add a reference to the System.Transactions.dll assembly.
' The following service implementation:
' * -- Processes messages on one thread at a time
' * -- Creates one service object per session
' * -- Releases the service object when the transaction commits
' 
 <ServiceBehavior(ConcurrencyMode:=ConcurrencyMode.Single, InstanceContextMode:=InstanceContextMode.PerSession, _
 ReleaseServiceInstanceOnTransactionComplete:=True)> _
 Public Class BehaviorService
 Implements IBehaviorService, IDisposable
 Private myID As Guid

 Public Sub New()
 myID = Guid.NewGuid()
 Console.WriteLine("Object " & myID.ToString() & " created.")
 End Sub

 ' 
 ' * The following operation-level behaviors are specified:
 ' * -- The executing transaction is committed when
 ' * the operation completes without an 
 ' * unhandled exception
 ' * -- Always executes under a flowed transaction.
 ' 
 <OperationBehavior(TransactionAutoComplete:=True, TransactionScopeRequired:=True), TransactionFlow(TransactionFlowOption.Mandatory)> _
 Public Function TxWork(ByVal message As String) As String Implements IBehaviorService.TxWork
 ' Do some transactable work.
 Console.WriteLine("TxWork called with: " & message)
 ' Display transaction information.

 Dim info As TransactionInformation = Transaction.Current.TransactionInformation
 Console.WriteLine("The distributed tx ID: {0}.", info.DistributedIdentifier)
 Console.WriteLine("The tx status: {0}.", info.Status)
 Return String.Format("Hello. This was object {0}.", myID.ToString())
 End Function

 Public Sub Dispose() Implements IDisposable.Dispose
 Console.WriteLine("Service " & myID.ToString() & " is being recycled.")
 End Sub
 End Class
End Namespace

Remarks

This enumeration is used to instantiate an instance of the TransactionFlowAttribute class, which is used to mark a service contract method to indicate its transaction flow policy.

Applies to

See also


Feedback

Was this page helpful?