/// <summary> /// CommitAsync /// </summary> /// <param name="context"></param> /// <returns></returns> /// <exception cref="DatabaseException"></exception> public async Task CommitAsync(TransactionContext context, [CallerMemberName] string?callerMemberName = null, [CallerLineNumber] int callerLineNumber = 0) { //if (context == null || context.Transaction == null) //{ // throw new ArgumentNullException(nameof(context)); //} if (context.Status == TransactionStatus.Commited) { return; } if (context.Status != TransactionStatus.InTransaction) { throw Exceptions.TransactionError("AlreadyFinished", callerMemberName, callerLineNumber); } try { IDbConnection?conn = context.Transaction.Connection; await _databaseEngine.CommitAsync(context.Transaction).ConfigureAwait(false); //context.Transaction.Commit(); context.Transaction.Dispose(); if (conn != null && conn.State != ConnectionState.Closed) { conn.Dispose(); } context.Status = TransactionStatus.Commited; } catch { context.Status = TransactionStatus.Failed; throw; } }