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 static Task <object> ExecuteScalarAsync(IDbCommandAsync command, string sql, IEnumerable <IDbDataParameter> parameters) { return(command .SetText(HandleParameters(command, sql)) .SetParameters(parameters) .ExecuteScalarAsync()); }
/// <summary> /// Wraps an existing IDataReader in an IDataResultsStream for object mapping and other capabilities. /// The IDataReader (and IDbCommand and IDbConnection, if any) will need to be managed and disposed /// manually. /// </summary> /// <param name="runner"></param> /// <param name="reader"></param> /// <param name="command">If provided, gives access to mapped output parameters</param> /// <returns></returns> public static IDataResultsStream WrapAsResultStream(this ISqlRunner runner, IDataReader reader, IDbCommand command = null) { Argument.NotNull(reader, nameof(reader)); var wrappedReader = new GenericDataReaderAsync(reader); IDbCommandAsync wrappedCommand = command == null ? null : new GenericDbCommandAsync(command); return(new DataReaderResultsStream(wrappedCommand, null, wrappedReader, null)); }
public void StartExecute(int index, IDbCommandAsync command) { _monitor?.StartEvent($"Statement {index}: Execute"); if (_onCommandText != null) { var text = Stringifier.Stringify(command); _onCommandText(text); } }
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 string Stringify(IDbCommandAsync command) => Stringify(command.Command);
public string Stringify(IDbCommandAsync command) { return(Stringify(command.Command)); }
public DataReaderResults(IDbCommandAsync command, IExecutionContext context, IDataReaderAsync reader, int?rowsAffected, object queryObject) : base(command, context, reader, rowsAffected, queryObject) { }