public static Read ( SqlDataReader dataReader, bool isStreamSupported, CancellationToken cancellationToken = default ) : Task |
||
dataReader | SqlDataReader | |
isStreamSupported | bool | |
cancellationToken | CancellationToken | |
Résultat | 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); } }
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)); } }