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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access