Describes a committable transaction.
public ref class CommittableTransaction sealed : System::Transactions::Transaction, IAsyncResult, IDisposable, System::Runtime::Serialization::ISerializable
[System.Serializable] public sealed class CommittableTransaction : System.Transactions.Transaction, IAsyncResult, IDisposable, System.Runtime.Serialization.ISerializable
type CommittableTransaction = class inherit Transaction interface ISerializable interface IDisposable interface IAsyncResult
Public NotInheritable Class CommittableTransaction Inherits Transaction Implements IAsyncResult, IDisposable, ISerializable
The following sample creates two new instances of CommittableTransaction, commits and rolls back them respectively.
The CommittableTransaction class provides an explicit way for applications to use a transaction, as opposed to using the TransactionScope class implicitly. Unlike the TransactionScope class, the application writer needs to specifically call the Commit and Rollback methods in order to commit or abort the transaction. However, only the creator of a transaction can commit the transaction. Therefore, copies of a committable transaction, obtained through the Clone method are not committable.
We recommend that you create implicit transactions using the TransactionScope class, so that the ambient transaction context is automatically managed for you. You should also use the TransactionScope and DependentTransaction class for applications that require the use of the same transaction across multiple function calls or multiple thread calls. For more information on this model, see the Implementing An Implicit Transaction Using Transaction Scope topic.
Creating a CommittableTransaction does not automatically set the ambient transaction, which is the transaction your code executes in. You can get or set the ambient transaction by calling the static Transaction.Current property of the global Transaction object. For more information on ambient transactions, see the " Managing Transaction Flow using TransactionScopeOption" section of the Implementing An Implicit Transaction Using Transaction Scope topic. If the ambient transaction is not set, any operation on a resource manager is not part of that transaction. You need to explicitly set and reset the ambient transaction to ensure that resource managers operate under the right transaction context.
Until a CommittableTransaction has been committed, all the resources involved with the transaction are still locked.
A CommittableTransaction object cannot be reused. Once it has been committed or rolled back, it cannot be used again in a transaction or set as the current ambient transaction context.
|CommittableTransaction() CommittableTransaction() CommittableTransaction() CommittableTransaction()||
Initializes a new instance of the CommittableTransaction class.
|CommittableTransaction(TimeSpan) CommittableTransaction(TimeSpan) CommittableTransaction(TimeSpan) CommittableTransaction(TimeSpan)||
Initializes a new instance of the CommittableTransaction class with the specified
|CommittableTransaction(TransactionOptions) CommittableTransaction(TransactionOptions) CommittableTransaction(TransactionOptions) CommittableTransaction(TransactionOptions)||
Initializes a new instance of the CommittableTransaction class with the specified transaction options.
Explicit Interface Implementations
|IsolationLevel IsolationLevel IsolationLevel IsolationLevel||
Gets the isolation level of the transaction.(Inherited from Transaction)
|PromoterType PromoterType PromoterType PromoterType||
Uniquely identifies the format of the
|TransactionInformation TransactionInformation TransactionInformation TransactionInformation||
Retrieves additional information about a transaction.(Inherited from Transaction)
|TransactionCompleted TransactionCompleted TransactionCompleted TransactionCompleted||
Indicates that the transaction is completed.(Inherited from Transaction)
This type is thread safe.