Read() public static method

public static Read ( SqlDataReader dataReader, bool isStreamSupported, CancellationToken cancellationToken = default ) : Task
dataReader SqlDataReader
isStreamSupported bool
cancellationToken CancellationToken
return Task
        async Task <MessageReadResult> ReadMessage(SqlCommand command, CancellationToken cancellationToken)
        {
            var behavior = CommandBehavior.SingleRow;

            if (isStreamSupported)
            {
                behavior |= CommandBehavior.SequentialAccess;
            }

            using (var dataReader = await command.ExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false))
            {
                if (!await dataReader.ReadAsync(cancellationToken).ConfigureAwait(false))
                {
                    return(MessageReadResult.NoMessage);
                }

                var readResult = await MessageRow.Read(dataReader, isStreamSupported, cancellationToken).ConfigureAwait(false);

                //HINT: Reading all pending results makes sure that any query execution error,
                //      sent after the first result, are thrown by the SqlDataReader as SqlExceptions.
                //      More details in: https://github.com/DapperLib/Dapper/issues/1210
                while (await dataReader.ReadAsync(cancellationToken).ConfigureAwait(false))
                {
                }

                while (await dataReader.NextResultAsync(cancellationToken).ConfigureAwait(false))
                {
                }

                return(readResult);
            }
        }
Ejemplo n.º 2
0
        async Task <MessageReadResult> ReadMessage(SqlCommand command, CancellationToken cancellationToken)
        {
            var behavior = CommandBehavior.SingleRow;

            if (isStreamSupported)
            {
                behavior |= CommandBehavior.SequentialAccess;
            }

            using (var dataReader = await command.ExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false))
            {
                if (!await dataReader.ReadAsync(cancellationToken).ConfigureAwait(false))
                {
                    return(MessageReadResult.NoMessage);
                }

                return(await MessageRow.Read(dataReader, isStreamSupported, cancellationToken).ConfigureAwait(false));
            }
        }