Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 public static Task <object> ExecuteScalarAsync(IDbCommandAsync command, string sql, IEnumerable <IDbDataParameter> parameters)
 {
     return(command
            .SetText(HandleParameters(command, sql))
            .SetParameters(parameters)
            .ExecuteScalarAsync());
 }
Esempio n. 3
0
        /// <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));
        }
Esempio n. 4
0
 public void StartExecute(int index, IDbCommandAsync command)
 {
     _monitor?.StartEvent($"Statement {index}: Execute");
     if (_onCommandText != null)
     {
         var text = Stringifier.Stringify(command);
         _onCommandText(text);
     }
 }
Esempio n. 5
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));
 }
Esempio n. 6
0
 public string Stringify(IDbCommandAsync command) => Stringify(command.Command);
 public string Stringify(IDbCommandAsync command)
 {
     return(Stringify(command.Command));
 }
Esempio n. 8
0
 public DataReaderResults(IDbCommandAsync command, IExecutionContext context, IDataReaderAsync reader, int?rowsAffected, object queryObject)
     : base(command, context, reader, rowsAffected, queryObject)
 {
 }