Automatic transaction using ASP.NET

Let other users know how useful this tip is by rating it below. Got a tip or code of your own you'd like to share? Submit it here.

Two or more .NET Framework objects can participate in the same transaction. One or more .NET Framework objects can participate in the same transaction as one or more COM+ objects. All objects must be hosted in Microsoft Windows 2000 Component Services so as to receive services such as transaction processing.

There are several considerations you must address in designing transactions that span COM+ and .NET Framework objects. For example, in order for a .NET Framework object to participate in an automatic transaction, the .NET Framework class must be registered with Window 2000 Component Services. However, not all transactions are automatic. The activities you perform when programming transactions depend on the transaction model you choose.

Microsoft Transaction Server (MTS), COM+ and the Common Language Runtime (CLR) support the same automatic, distributed transaction model.

Once an ASP.NET page, WebMethod or .NET Framework class is marked to participate in a transaction, it will automatically execute within the scope of a transaction. You can control an object's transactional behavior by setting a transaction attribute value on the page, WebMethod or class. The attribute value, in turn, determines the transactional behavior of the instantiated object.

Thus, based on the declared attribute value, an object will automatically participate in an existing or ongoing transaction, be the root of a new transaction, or never participate in a transaction at all. The ASP.NET framework supports automatic transactions on Windows 2000. By inserting a transaction directive into your ASP.NET page, you can instruct the page to participate in an existing transaction, begin a new transaction or never participate in a transaction.

The table below lists and describes the transaction directives available in ASP.NET.

Directive Description
NotSupported This value indicates that the page does not run within the scope of transactions. When a request is processed, its object context is created without a transaction, regardless of whether there is a transaction active.
Supported The page will run in the context of an existing transaction, if one exists. If not, it will run without a transaction.
Required The page requires a transaction. It will run in the context of an existing transaction, if one exists. If not, it will start one.
RequiresNew The page requires a transaction and a new transaction will be started for each request.

You can indicate the level of transaction support on a page by placing the directive in your code. For example, you can ensure that the page activities always execute in the scope of a transaction by inserting the following directive:

<%@ Page Transaction="Required" %>

The default transaction state is None, which indicates that the transaction context will be ignored by the ASP.NET framework. There is no explicit directive for this value; in other words, you cannot add page Transaction="None" to your page. Instead, simply omit the transaction directive to apply the default value.

Source: DotNetExtreme.com

This was first published in March 2003

There are Comments. Add yours.

TIP: Want to include a code block in your comment? Use <pre> or <code> tags around the desired text. Ex: <code>insert code</code>

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy
Sort by: OldestNewest

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to:

Disclaimer: Our Tips Exchange is a forum for you to share technical advice and expertise with your peers and to learn from other enterprise IT professionals. TechTarget provides the infrastructure to facilitate this sharing of information. However, we cannot guarantee the accuracy or validity of the material submitted. You agree that your use of the Ask The Expert services and your reliance on any questions, answers, information or other materials received through this Web site is at your own risk.