Edit

Share via


DataReaderExtensions.GetFieldValueAsync<T> Method

Definition

Asynchronously gets the value of the specified column as the requested type.

public static System.Threading.Tasks.Task<T> GetFieldValueAsync<T> (this System.Data.Common.DbDataReader reader, string name, System.Threading.CancellationToken cancellationToken = default);
static member GetFieldValueAsync : System.Data.Common.DbDataReader * string * System.Threading.CancellationToken -> System.Threading.Tasks.Task<'T>
<Extension()>
Public Function GetFieldValueAsync(Of T) (reader As DbDataReader, name As String, Optional cancellationToken As CancellationToken = Nothing) As Task(Of T)

Type Parameters

T

The type of the value to be returned.

Parameters

reader
DbDataReader

The data reader to get the column value from.

name
String

The name of the column.

cancellationToken
CancellationToken

An optional token to cancel the asynchronous operation.

Returns

Task<T>

A task whose Result contains the value of the specified column.

Exceptions

The connection was dropped or closed during data retrieval.

-or-

The data reader was closed during the data retrieval.

-or-

There is no data ready to be read (for example, the first Read() hasn't been called, or it returned false).

-or-

Tried to read a previously-read column in sequential mode.

-or-

There was an asynchronous operation in progress. This applies to all Get_*_ methods when running in sequential mode, as they could be called while reading a stream.

The name specified is not a valid column name.

The value returned by the database doesn't match or cannot be cast to T.

The cancellation token was canceled. This exception is stored into the returned task.

Remarks

This asynchronous method is only needed to avoid blocking the calling thread when the reader is created in sequential mode.

If sequential mode isn't specified, all column values should become available in memory each time ReadAsync completes, and calling the synchronous version of the method shouldn't block the calling thread.

The default implementation of this asynchronous method invokes its synchronous counterpart and returns a completed Task, potentially blocking the calling thread. The default implementation also returns a cancelled task if passed an already cancelled cancellation token.

Data providers that support asynchronous programming should override the default inmplementation using asynchronous I/O operations.

This method accepts a cancellation token that can be used to request the operation to be cancelled early. Implementations may ignore this request.

Other methods and properties of the DbDataReader object should not be invoked while the returned Task is not yet completed.

Applies to