Máy khách Oracle không ghi đè các phiên bản không đồng bộ của các phương thức. Họ sử dụng DbCommand mặc định triển khai gọi các phiên bản không đồng bộ của phương thức.
Ví dụ:việc triển khai ExecuteNonQueryAsync là:
// System.Data.Common.DbCommand
public virtual Task<int> ExecuteNonQueryAsync(CancellationToken cancellationToken)
{
if (cancellationToken.IsCancellationRequested)
{
return ADP.CreatedTaskWithCancellation<int>();
}
CancellationTokenRegistration cancellationTokenRegistration = default(CancellationTokenRegistration);
if (cancellationToken.CanBeCanceled)
{
cancellationTokenRegistration = cancellationToken.Register(new Action(this.CancelIgnoreFailure));
}
Task<int> result;
try
{
result = Task.FromResult<int>(this.ExecuteNonQuery());
}
catch (Exception ex)
{
cancellationTokenRegistration.Dispose();
result = ADP.CreatedTaskWithException<int>(ex);
}
return result;
}
Như bạn thấy, nó chỉ đơn giản gọi ExecuteNonQuery bên dưới (quá tải không tham số của ExecuteNonQueryAsync gọi phiên bản này của phương thức).