The Transaction Class
The Transaction
class
from the System.Transactions
namespace, introduced in .NET 2.0, represents the transaction that all
.NET transaction managers work with:
[Serializable]
public class Transaction : IDisposable,ISerializable
{
public static Transaction Current
{get;set;}
public void Rollback(); //Abort the transaction
public void Dispose();
//More members
}
Developers rarely need to interact with the Transaction
class directly. The main use of
the Transaction
class is to manually
abort a transaction by calling the Rollback()
method.
Additional features of the Transaction
class include enlisting resource
managers, setting the isolation level, subscribing to transaction
events, cloning the transaction for concurrent threads, and obtaining
the transaction status and other information.
The Ambient Transaction
.NET 2.0 defined a concept called the ambient
transaction, which is the transaction in which your code
executes. To obtain a reference to the ambient transaction, call the
static Current
property of
Transaction
:
Transaction ambientTransaction = Transaction.Current;
If there is no ambient transaction, Current
will return null
. Every piece of code, be it client or
service, can always reach out for its ambient transaction. The ambient
transaction object is stored in the thread local storage (TLS). As a result, when the thread
winds its way across multiple objects and methods on the same call
chain, all objects and methods can access their ambient
transactions.
In ...
Get Programming WCF Services, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.