diff --git a/Source/Core/ExpressiveCommandBase.cs b/Source/Core/ExpressiveCommandBase.cs index 16e4c01..1ffd38f 100644 --- a/Source/Core/ExpressiveCommandBase.cs +++ b/Source/Core/ExpressiveCommandBase.cs @@ -1047,10 +1047,11 @@ ValueTask ExecuteReaderCoreAsync(TState state, Func> ToListAsync(this DbCommand command, Contract.EndContractBlock(); #if NETSTANDARD2_0 + using DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); #else - await + DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); + await using var readerDisposal = reader.ConfigureAwait(false); #endif - using DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); return await reader.ToListAsync(transform, cancellationToken).ConfigureAwait(false); } @@ -182,10 +183,11 @@ public static async ValueTask> ToListAsync(this DbCommand command, Contract.EndContractBlock(); #if NETSTANDARD2_0 + using DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); #else - await + DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); + await using var readerDisposal = reader.ConfigureAwait(false); #endif - using DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); if (useReadAsync) return await reader.ToListAsync(transform, cancellationToken).ConfigureAwait(false); @@ -346,10 +348,11 @@ public static async ValueTask ExecuteReaderAsync(this DbCommand command, Contract.EndContractBlock(); #if NETSTANDARD2_0 + using DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); #else - await + DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); + await using var readerDisposal = reader.ConfigureAwait(false); #endif - using DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); handler(reader); } @@ -395,10 +398,11 @@ public static async ValueTask ExecuteReaderAsync(this DbCommand command, Contract.EndContractBlock(); #if NETSTANDARD2_0 + using DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); #else - await + DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); + await using var readerDisposal = reader.ConfigureAwait(false); #endif - using DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); await handler(reader).ConfigureAwait(false); } @@ -421,10 +425,11 @@ public static async ValueTask ExecuteReaderAsync(this DbCommand command, Contract.EndContractBlock(); #if NETSTANDARD2_0 + using DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); #else - await + DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); + await using var readerDisposal = reader.ConfigureAwait(false); #endif - using DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); return transform(reader); } @@ -464,10 +469,11 @@ public static async ValueTask ExecuteReaderAsync(this DbCommand command, Contract.EndContractBlock(); #if NETSTANDARD2_0 + using DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); #else - await + DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); + await using var readerDisposal = reader.ConfigureAwait(false); #endif - using DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); return await transform(reader).ConfigureAwait(false); } @@ -585,10 +591,11 @@ public static async ValueTask ForEachAsync(this DbCommand command, cancellationToken.ThrowIfCancellationRequested(); #if NETSTANDARD2_0 + using DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); #else - await + DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); + await using var readerDisposal = reader.ConfigureAwait(false); #endif - using DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); await reader.ForEachAsync(handler, useReadAsync, cancellationToken).ConfigureAwait(false); } @@ -612,10 +619,11 @@ public static async ValueTask ForEachAsync(this DbCommand command, cancellationToken.ThrowIfCancellationRequested(); #if NETSTANDARD2_0 + using DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); #else - await + DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); + await using var readerDisposal = reader.ConfigureAwait(false); #endif - using DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); await reader.ForEachAsync(handler, useReadAsync, cancellationToken).ConfigureAwait(false); } @@ -641,10 +649,11 @@ public static async ValueTask IterateReaderWhileAsync(this DbCommand command, Fu Contract.EndContractBlock(); #if NETSTANDARD2_0 + using DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); #else - await + DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); + await using var readerDisposal = reader.ConfigureAwait(false); #endif - using DbDataReader reader = await command.OpenAndExecuteReaderAsync(behavior, cancellationToken).ConfigureAwait(false); await reader.IterateWhileAsync(predicate, useReadAsync, cancellationToken).ConfigureAwait(false); }