이 문서는 기계 번역을 이용하여 번역되었습니다. 문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

TransactionFlowOption 열거형

 

게시 날짜: 2016년 11월

서비스 작업에 트랜잭션 흐름 정책을 지정하기 위해 TransactionFlowAttribute를 사용하는 열거형입니다.

네임스페이스:   System.ServiceModel
어셈블리:  System.ServiceModel(System.ServiceModel.dll에 있음)

public enum TransactionFlowOption

멤버 이름설명
Allowed

트랜잭션이 이동했을 수 있습니다.

Mandatory

트랜잭션이 이동해야 합니다.

NotAllowed

트랜잭션이 이동하지 않아야 합니다. 기본값입니다.

이 열거형은 트랜잭션 흐름 정책을 나타내도록 서비스 계약 메서드를 표시하는 데 사용되는 TransactionFlowAttribute 클래스의 인스턴스를 인스턴스화하는 데 사용합니다.

다음 코드 예제에서는 이 열거형을 작업 수준에서 TransactionFlowOption 클래스와 함께 사용하는 방법을 보여 줍니다.

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."
      );
    }
  }
}

.NET Framework
3.0 이후 사용 가능
맨 위로 이동
표시: