Table of Contents

Class ApplicationAuditedTransaction

Namespace
ProjectTemplate.Infrastructure.Data.Auditing
Assembly
ProjectTemplate.Infrastructure.dll

Coordinates an application mutation, NCAT audit persistence, generated-value audit completion, and an optional local completion handoff inside one relational database transaction boundary.

public sealed class ApplicationAuditedTransaction : IApplicationAuditedTransaction
Inheritance
ApplicationAuditedTransaction
Implements
Inherited Members

Constructors

ApplicationAuditedTransaction(ApplicationDbContext, IApplicationMutationAuditReceiptAccessor)

Initializes a new instance of the ApplicationAuditedTransaction class.

public ApplicationAuditedTransaction(ApplicationDbContext dbContext, IApplicationMutationAuditReceiptAccessor receiptAccessor)

Parameters

dbContext ApplicationDbContext
receiptAccessor IApplicationMutationAuditReceiptAccessor

Methods

Execute(Action<ApplicationDbContext>, Action<ApplicationDbContext, ApplicationMutationAuditReceipt>?, IsolationLevel?)

Executes a synchronous mutation and optional local completion persistence operation.

public ApplicationAuditedTransactionResult Execute(Action<ApplicationDbContext> mutation, Action<ApplicationDbContext, ApplicationMutationAuditReceipt>? persistLocalCompletion = null, IsolationLevel? isolationLevel = null)

Parameters

mutation Action<ApplicationDbContext>

Stages the business mutation on the supplied application database context.

persistLocalCompletion Action<ApplicationDbContext, ApplicationMutationAuditReceipt>

Optionally stages a database-local completion or outbox record after the mutation audit receipt is available. External delivery must not occur inside this callback.

isolationLevel IsolationLevel?

Optional isolation level for a coordinator-owned transaction. It cannot be supplied when joining an existing transaction.

Returns

ApplicationAuditedTransactionResult

The completed transaction result.

ExecuteAsync(Func<ApplicationDbContext, CancellationToken, Task>, Func<ApplicationDbContext, ApplicationMutationAuditReceipt, CancellationToken, Task>?, IsolationLevel?, CancellationToken)

Executes an asynchronous mutation and optional local completion persistence operation.

public Task<ApplicationAuditedTransactionResult> ExecuteAsync(Func<ApplicationDbContext, CancellationToken, Task> mutation, Func<ApplicationDbContext, ApplicationMutationAuditReceipt, CancellationToken, Task>? persistLocalCompletion = null, IsolationLevel? isolationLevel = null, CancellationToken cancellationToken = default)

Parameters

mutation Func<ApplicationDbContext, CancellationToken, Task>

Stages the business mutation on the supplied application database context.

persistLocalCompletion Func<ApplicationDbContext, ApplicationMutationAuditReceipt, CancellationToken, Task>

Optionally stages a database-local completion or outbox record after the mutation audit receipt is available. External delivery must not occur inside this callback.

isolationLevel IsolationLevel?

Optional isolation level for a coordinator-owned transaction. It cannot be supplied when joining an existing transaction.

cancellationToken CancellationToken

A token that can cancel the operation.

Returns

Task<ApplicationAuditedTransactionResult>

The completed transaction result.