TransactionScopeRequired (Propiedad)
Collapse the table of content
Expand the table of content

OperationBehaviorAttribute.TransactionScopeRequired (Propiedad)

Actualización: noviembre 2007

Obtiene o establece un valor que indica si el método requiere un ámbito de la transacción para su ejecución.

Espacio de nombres:  System.ServiceModel
Ensamblado:  System.ServiceModel (en System.ServiceModel.dll)

public bool TransactionScopeRequired { get; set; }
/** @property */
public boolean get_TransactionScopeRequired()
/** @property */
public  void set_TransactionScopeRequired(boolean value)

public function get TransactionScopeRequired () : boolean
public function set TransactionScopeRequired (value : boolean)

Valor de propiedad

Tipo: System.Boolean
true si el método exige que un ámbito de la transacción se ejecute; de lo contrario, false. El valor predeterminado es false.

Establezca TransactionScopeRequired en true para exigir que su operación se ejecute dentro de un ámbito de la transacción. Si una transacción de flujo está disponible, la operación se ejecuta dentro de esa transacción. Si ninguna está disponible, se crea una nueva transacción y se utiliza para la ejecución de la operación. El enlace especificado en el extremo controla si se admiten las transacciones de flujo. Por consiguiente, para obtener el comportamiento apropiado debe entender la interacción entre si el enlace y la propiedad TransactionScopeRequired permiten el flujo de transacciones. En la siguiente tabla se muestra el posible comportamiento.

TransactionScopeRequired

El enlace permite el flujo de transacciones

El autor de la llamada fluye la transacción

Result

False

False

No

El método se ejecuta sin una transacción.

True

False

No

El método se crea y se ejecuta dentro de una nueva transacción.

True o False

False

Se devuelve un error de SOAP para el encabezado de transacción.

False

True

El método se ejecuta sin una transacción.

True

True

El método se ejecuta bajo la transacción fluida.

El ejemplo de código siguiente muestra una operación que se ejecuta dentro de una transacción distribuida obligatoria. La propiedad TransactionScopeRequired indica que la operación se ejecuta bajo un ámbito de la transacción, y la propiedad TransactionAutoComplete indica que, si no se produce ninguna excepción no controlada, se completa el ámbito de la transacción automáticamente. Si se produce una excepción no controlada, se anula la transacción.

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:
     *   -- Always executes under a transaction scope.
     *   -- The transaction scope is completed when the operation terminates 
     *       without an unhandled exception.
     */
    [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."
      );
    }
  }
}


Windows Vista, Windows XP SP2, Windows Server 2003

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2016 Microsoft