From ffb2baf956426a7b8453d010fc761cdfe429037c Mon Sep 17 00:00:00 2001 From: David Francis Date: Wed, 4 Aug 2021 00:19:21 -0400 Subject: [PATCH] Use Bcl async interfaces to add async streams to standard 2.0 --- Dapper.StrongName/Dapper.StrongName.csproj | 3 +- Dapper/Dapper.csproj | 3 +- Dapper/SqlMapper.AsyncStream.cs | 54 +++++++++++++++++----- Dapper/SqlMapper.GridReader.AsyncStream.cs | 4 +- 4 files changed, 48 insertions(+), 16 deletions(-) diff --git a/Dapper.StrongName/Dapper.StrongName.csproj b/Dapper.StrongName/Dapper.StrongName.csproj index 31a43f156..1ed89eecd 100644 --- a/Dapper.StrongName/Dapper.StrongName.csproj +++ b/Dapper.StrongName/Dapper.StrongName.csproj @@ -5,7 +5,7 @@ Dapper (Strong Named) A high performance Micro-ORM supporting SQL Server, MySQL, Sqlite, SqlCE, Firebird etc.. Sam Saffron;Marc Gravell;Nick Craver - net461;netstandard2.0;netstandard2.1;net5.0 + net461;netstandard2.0;net5.0 true true @@ -19,6 +19,7 @@ true + diff --git a/Dapper/Dapper.csproj b/Dapper/Dapper.csproj index 74b9efe09..d7031a1bd 100644 --- a/Dapper/Dapper.csproj +++ b/Dapper/Dapper.csproj @@ -5,7 +5,7 @@ orm;sql;micro-orm A high performance Micro-ORM supporting SQL Server, MySQL, Sqlite, SqlCE, Firebird etc.. Sam Saffron;Marc Gravell;Nick Craver - net461;netstandard2.0;netstandard2.1;net5.0 + net461;netstandard2.0;net5.0 @@ -16,6 +16,7 @@ true + diff --git a/Dapper/SqlMapper.AsyncStream.cs b/Dapper/SqlMapper.AsyncStream.cs index 5e328226d..3ba96cd2b 100644 --- a/Dapper/SqlMapper.AsyncStream.cs +++ b/Dapper/SqlMapper.AsyncStream.cs @@ -1,4 +1,4 @@ -#if NET5_0 || NETSTANDARD2_1 +#if NET5_0 || NETSTANDARD2_0 using System; using System.Collections.Generic; using System.Data; @@ -96,7 +96,10 @@ private static async IAsyncEnumerable StreamAsync(this IDbConnection cnn, var info = GetCacheInfo(identity, param, command.AddToCache); bool wasClosed = cnn.State == ConnectionState.Closed; var cancel = command.CancellationToken; - await using var cmd = command.TrySetupAsyncCommand(cnn, info.ParamReader); +#if NET5_0 + await +#endif + using var cmd = command.TrySetupAsyncCommand(cnn, info.ParamReader); DbDataReader reader = null; try { @@ -131,7 +134,10 @@ private static async IAsyncEnumerable StreamAsync(this IDbConnection cnn, } finally { - await using (reader) { /* dispose if non-null */ } +#if NET5_0 + await +#endif + using (reader) { /* dispose if non-null */ } if (wasClosed) cnn.Close(); } } @@ -392,8 +398,14 @@ private static async IAsyncEnumerable MultiMapStreamAsync(null, CommandDefinition.ForCallback(command.Parameters), map, splitOn, reader, identity, true); @@ -451,8 +463,14 @@ private static async IAsyncEnumerable MultiMapStreamAsync(this try { if (wasClosed) await cnn.TryOpenAsync(command.CancellationToken).ConfigureAwait(false); - await using var cmd = command.TrySetupAsyncCommand(cnn, info.ParamReader); - await using var reader = await ExecuteReaderWithFlagsFallbackAsync(cmd, wasClosed, CommandBehavior.SequentialAccess | CommandBehavior.SingleResult, cancel).ConfigureAwait(false); +#if NET5_0 + await +#endif + using var cmd = command.TrySetupAsyncCommand(cnn, info.ParamReader); +#if NET5_0 + await +#endif + using var reader = await ExecuteReaderWithFlagsFallbackAsync(cmd, wasClosed, CommandBehavior.SequentialAccess | CommandBehavior.SingleResult, cancel).ConfigureAwait(false); var results = MultiMapAsyncImpl(null, default, types, map, splitOn, reader, identity, true); var buffer = command.Buffered ? new List() : null; @@ -523,12 +541,18 @@ private static async IAsyncEnumerable MultiMapStreamImpl MultiMapAsyncImpl(this I { try { - await using (ownedReader) { /* dispose if non-null */ } +#if NET5_0 + await +#endif + using (ownedReader) { /* dispose if non-null */ } } finally { ownedCommand?.Parameters.Clear(); - await using (ownedCommand) { /* dispose if non-null */ } +#if NET5_0 + await +#endif + using (ownedCommand) { /* dispose if non-null */ } if (wasClosed) cnn.Close(); } } } } } -#endif // NET5_0 +#endif // NET5_0 || NETSTANDARD2_0 diff --git a/Dapper/SqlMapper.GridReader.AsyncStream.cs b/Dapper/SqlMapper.GridReader.AsyncStream.cs index dada96b16..59c43b5c3 100644 --- a/Dapper/SqlMapper.GridReader.AsyncStream.cs +++ b/Dapper/SqlMapper.GridReader.AsyncStream.cs @@ -1,4 +1,4 @@ -#if NET5_0 || NETSTANDARD2_1 +#if NET5_0 || NETSTANDARD2_0 using System; using System.Collections.Generic; using System.Data; @@ -97,4 +97,4 @@ private async IAsyncEnumerable ReadStreamAsync(int index, Func