Le client Oracle ne remplace pas les versions asynchrones des méthodes. Ils utilisent la valeur par défaut DbCommand
les implémentations qui appellent les versions non asynchrones des méthodes.
Par exemple, l'implémentation de ExecuteNonQueryAsync
est :
// 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;
}
Comme vous pouvez le voir, il appelle simplement ExecuteNonQuery
sous le capot (la surcharge sans paramètre de ExecuteNonQueryAsync
appelle cette version de la méthode).