Wednesday, 6 January 2010

How do you write transactions better

public abstract class TransactionWorkOrder
{
protected Object[] m_Parameters;
protected Object m_Result;
///
/// For each service, a sub-classed WorkOrder must implement the Run function
/// to do the actual work with the business logic.
///

public abstract void Run();
public Object PerformWork(params Object[] parameters) {
//start transaction code here
// Do the actual work...
Run(); //Commit or rollback transaction here return m_result;
}
}

[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
public class TransactionWorkOrderAttribute : Attribute {
public TransactionWorkOrderAttribute ();
}