Table of Contents

Compensating Transaction Generator

[GenerateCompensatingTransaction] emits a CompensatingTransaction<TContext> factory from ordered step methods and named compensation methods.

[GenerateCompensatingTransaction(TransactionName = "checkout")]
public static partial class CheckoutTransaction
{
    [CompensatingTransactionStep("reserve-inventory", 10, Compensation = nameof(ReleaseInventory))]
    private static ValueTask ReserveInventory(CheckoutContext context, CancellationToken ct) => default;

    private static ValueTask ReleaseInventory(CheckoutContext context, CancellationToken ct) => default;
}

Diagnostics:

ID Meaning
PKCOMP001 Host type must be partial.
PKCOMP002 At least one [CompensatingTransactionStep] method is required.
PKCOMP003 Step, compensation, or condition method signature is invalid.
PKCOMP004 Step names and orders must be unique.
PKCOMP005 Factory method, transaction name, or compensation configuration is invalid.