O'Reilly logo

ADO.NET Cookbook by Bill Hamilton

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

6.1. Creating a Class That Participates in an Automatic Transaction

Problem

You need to create a .NET class that participates in automatic transactions.

Solution

Use the appropriate custom attributes from the System.EnterpriseServices namespace.

The sample contains a component that participates in automatic transactions. The component has a single method, TranTest( ) , that instructs the transaction to succeed or fail based on an argument success.

The sample also contains code that instantiates the component that participates in the automatic transaction. A checkbox on the form is used to specify the success parameter when the TranTest( ) method is called.

The C# code is shown in Examples Example 6-1 and Example 6-2.

Example 6-1. ServicedComponentCS Project File: SC0601.cs

// Namespaces, variables, and constants
using System.EnterpriseServices;
using System.Runtime.CompilerServices;
using System.Reflection;

//  . . . 

namespace AdoDotNetCookbookCS.ServicedComponentCS
{
    [Transaction(TransactionOption.Required)]
    public class SC0601 : ServicedComponent
    {
        [AutoComplete]
        public void TranTest(bool success)
        {
            //  . . .  Do some work.

            if(success)
            {
                // don't need the next line since AutoComplete
                // ContextUtil.SetComplete( );
            }
            else
            {
                // Vote to abort.
                ContextUtil.SetAbort( );
                // Raise an exception.
                throw new System.Exception(
                    "Error in Serviced Component 0601. " +
                    "Transaction aborted.");
            }
        }
    }
}

Example 6-2. File: AutoTransactionForm.cs

// Namespaces, variables, and constants using System; using ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required