public async Task <bool> MoveNext(CancellationToken cancellationToken) { if (_queryRunner == null) { _queryRunner = _dataContext.GetQueryRunner(_query, _queryNumber, _expression, _ps); _mapper.QueryRunner = _queryRunner; _dataReader = await _queryRunner.ExecuteReaderAsync(cancellationToken); var skip = _skipAction?.Invoke(_expression, _ps) ?? 0; while (skip-- > 0) { if (!await _dataReader.ReadAsync(cancellationToken)) { return(false); } } _take = _takeAction?.Invoke(_expression, _ps) ?? int.MaxValue; } if (_take-- > 0 && await _dataReader.ReadAsync(cancellationToken)) { _queryRunner.RowsCount++; Current = _mapper.Map(_queryRunner, _dataReader.DataReader); return(true); } return(false); }
protected DataReaderResultsBase(IDbCommandAsync command, IExecutionContext context, IDataReaderAsync reader, int?rowsAffected, object queryObject) { Command = command; Context = context; Reader = reader; CurrentSet = 0; Provider = context.Provider; _rowsAffected = rowsAffected; _queryObject = queryObject; _cacheKey = null; StateMachine = new StringKeyedStateMachine(); StateMachine.AddState(StateRawReaderConsumed) .TransitionOnEvent(StateRawReaderConsumed, null, ThrowRawReaderConsumedException) .TransitionOnEvent(StateReaderConsuming, null, ThrowRawReaderConsumedException) .TransitionOnEvent(StateOutputParams, null, ThrowRawReaderConsumedException); StateMachine.AddState(StateReaderConsuming) .TransitionOnEvent(StateRawReaderConsumed, null, ThrowConsumeAfterStreamingStartedException) .TransitionOnEvent(StateReaderConsuming, StateReaderConsuming) .TransitionOnEvent(StateOutputParams, StateOutputParams, EnableOutputParameters); StateMachine.AddState(StateOutputParams) .TransitionOnEvent(StateRawReaderConsumed, null, ThrowReaderClosedException) .TransitionOnEvent(StateReaderConsuming, null, ThrowReaderClosedException) .TransitionOnEvent(StateOutputParams, StateOutputParams, EnableOutputParameters); }
public ResultSetEnumerator(IDataResultsBase results, IDataReaderAsync reader, IExecutionContext context, Func <IDataRecord, T> read, int set) { _results = results; _reader = reader; _context = context; _read = read; _set = set; }
public DataRecordMappingEnumerable(IDataResultsBase results, IDataReaderAsync reader, IExecutionContext context, Func <IDataRecord, T> map) { Argument.NotNull(reader, nameof(reader)); Argument.NotNull(context, nameof(context)); Argument.NotNull(map, nameof(map)); _results = results; _reader = reader; _context = context; _map = map; _currentSet = results.CurrentSet; _readAttempts = 0; }
public DataReaderResultsStream(IDbCommandAsync command, IExecutionContext context, IDataReaderAsync reader, object queryObject) : base(command, context, reader, null, queryObject) { StateMachine.AddState(StateDisposed) .TransitionOnEvent(StateRawReaderConsumed, null, ThrowDisposedException) .TransitionOnEvent(StateReaderConsuming, null, ThrowDisposedException) .TransitionOnEvent(StateOutputParams, null, ThrowDisposedException) .TransitionOnEvent(StateDisposed, StateDisposed); StateMachine.UpdateState(StateRawReaderConsumed) .TransitionOnEvent(StateDisposed, StateDisposed, () => DisposeReferences(false)); StateMachine.UpdateState(StateReaderConsuming) .TransitionOnEvent(StateDisposed, StateDisposed, () => DisposeReferences(true)); StateMachine.UpdateState(StateOutputParams) .TransitionOnEvent(StateDisposed, StateDisposed, () => DisposeReferences(true)); }
public DataReaderResults(IDbCommandAsync command, IExecutionContext context, IDataReaderAsync reader, int?rowsAffected, object queryObject) : base(command, context, reader, rowsAffected, queryObject) { }