About me

Michael L Perry

Improving Enterprises

Principal Consultant


User login

Service transaction

Below is the source code for a service. Prove that:

  • The service has a transaction when it is called.
  • The transaction is disposed.
  • The code is thread safe.
public Order GetOrder(int orderId)
   return InvokeGetOrder(() => OrderServiceProvider.GetOrderWithItems(orderId));

public Order InvokeGetOrder(Func<Order> function)
    Order order;
    using (IBusinessTransactionContext currentBusinessTransactionContext =
        new AcidBusinessTransactionContext(_container, false))
        OrderServiceProvider.BusinessTransactionContext =

        order = function();

    return order;