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 ...
Get ADO.NET Cookbook 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.