public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) { try { await dbContext.BeginTransactionAsync(); await next(); await dbContext.CommitTransactionAsync(); } catch (Exception e) { await dbContext.RollBackTransactionAsync(); } }
public async Task BeginTransactionAsync_ExplicitIsolationLevel_IsolationLevelMatchesExpected() { var definitionProvider = new DataAnnotationsDefinitionProvider(); var statementCompiler = new TransactSqlAdapter(definitionProvider); await using (var connection = new SqlConnection(ConfigurationRoot.GetConnectionString("MasterDatabase"))) await using (var database = new DatabaseContext(connection, statementCompiler)) { var cancellationToken = CancellationToken.None; await database.OpenSharedConnectionAsync(cancellationToken); await using (var transaction = await database.BeginTransactionAsync(IsolationLevel.RepeatableRead, CancellationToken.None)) { Assert.IsFalse(transaction.IsDisposed); Assert.AreEqual(IsolationLevel.RepeatableRead, transaction.IsolationLevel); } } }