private void OnDbSessionCommitted(IDbSession dbSession) { if (!_sessionMappedExecutionQueue.TryGetValue(dbSession.Id, out var executionQueue)) { return; } while (executionQueue.TryDequeue(out var executionContext)) { InvokeSucceed?.Invoke(this, new InvokeSucceedEventArgs { ExecutionContext = executionContext }); } _sessionMappedExecutionQueue.TryRemove(dbSession.Id, out _); }
private void OnDbSessionInvoked(ExecutionContext executionContext) { if (executionContext.DbSession.Transaction == null) { InvokeSucceed?.Invoke(this, new InvokeSucceedEventArgs { ExecutionContext = executionContext }); } else { if (!_sessionMappedExecutionQueue.TryGetValue(executionContext.DbSession.Id, out var executionQueue)) { executionQueue = new ConcurrentQueue <ExecutionContext>(); _sessionMappedExecutionQueue.TryAdd(executionContext.DbSession.Id, executionQueue); } executionQueue.Enqueue(executionContext); } }