Beispiel #1
0
        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 _);
        }
Beispiel #2
0
        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);
            }
        }