Commit 5b1ed92b authored by Michael Burbea's avatar Michael Burbea

QueryAsync<Dynamic> should return an IEnumerable<DapperRow>

In `QueryAsync<Dynamic>` you will get back an `IEnumerable<object>` requiring you to use `.Cast<IDictionary<String,Object>>()` to get the desired behavior.
However, `Query` returns an `IEnumerable<DapperRow>` so you can use a simple cast or as to  `IEnumerable<IDictionary<string,object>>`

I propose this change to allow this code to just work::
```csharp
var rows = await QueryAsync(cnn, sql) as IEnumerable<IDictionary<string,object>>;
```
parent 8115d389
...@@ -18,18 +18,18 @@ public static partial class SqlMapper ...@@ -18,18 +18,18 @@ public static partial class SqlMapper
/// Execute a query asynchronously using .NET 4.5 Task. /// Execute a query asynchronously using .NET 4.5 Task.
/// </summary> /// </summary>
/// <remarks>Note: each row can be accessed via "dynamic", or by casting to an IDictionary&lt;string,object&gt;</remarks> /// <remarks>Note: each row can be accessed via "dynamic", or by casting to an IDictionary&lt;string,object&gt;</remarks>
public static Task<IEnumerable<dynamic>> QueryAsync(this IDbConnection cnn, string sql, dynamic param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null) public static async Task<IEnumerable<dynamic>> QueryAsync(this IDbConnection cnn, string sql, dynamic param = null, IDbTransaction transaction = null, int? commandTimeout = null, CommandType? commandType = null)
{ {
return QueryAsync<dynamic>(cnn, typeof(DapperRow), new CommandDefinition(sql, (object)param, transaction, commandTimeout, commandType, CommandFlags.Buffered, default(CancellationToken))); return await QueryAsync<DapperRow>(cnn, typeof(DapperRow), new CommandDefinition(sql, (object)param, transaction, commandTimeout, commandType, CommandFlags.Buffered, default(CancellationToken))).ConfigureAwait(false);
} }
/// <summary> /// <summary>
/// Execute a query asynchronously using .NET 4.5 Task. /// Execute a query asynchronously using .NET 4.5 Task.
/// </summary> /// </summary>
/// <remarks>Note: each row can be accessed via "dynamic", or by casting to an IDictionary&lt;string,object&gt;</remarks> /// <remarks>Note: each row can be accessed via "dynamic", or by casting to an IDictionary&lt;string,object&gt;</remarks>
public static Task<IEnumerable<dynamic>> QueryAsync(this IDbConnection cnn, CommandDefinition command) public static async Task<IEnumerable<dynamic>> QueryAsync(this IDbConnection cnn, CommandDefinition command)
{ {
return QueryAsync<dynamic>(cnn, typeof(DapperRow), command); return await QueryAsync<DapperRow>(cnn, typeof(DapperRow), command).ConfigureAwait(false);
} }
/// <summary> /// <summary>
...@@ -461,7 +461,7 @@ private static async Task<int> ExecuteImplAsync(IDbConnection cnn, CommandDefini ...@@ -461,7 +461,7 @@ private static async Task<int> ExecuteImplAsync(IDbConnection cnn, CommandDefini
if (wasClosed) cnn.Close(); if (wasClosed) cnn.Close();
} }
} }
/// <summary> /// <summary>
/// Perform a multi mapping query with arbitrary input parameters /// Perform a multi mapping query with arbitrary input parameters
/// </summary> /// </summary>
...@@ -507,7 +507,7 @@ private static async Task<IEnumerable<TReturn>> MultiMapAsync<TReturn>(this IDbC ...@@ -507,7 +507,7 @@ private static async Task<IEnumerable<TReturn>> MultiMapAsync<TReturn>(this IDbC
} }
} }
private static IEnumerable<T> ExecuteReaderSync<T>(IDataReader reader, Func<IDataReader, object> func, object parameters) private static IEnumerable<T> ExecuteReaderSync<T>(IDataReader reader, Func<IDataReader, object> func, object parameters)
{ {
using (reader) using (reader)
{ {
...@@ -827,4 +827,4 @@ private async static Task<T> ExecuteScalarImplAsync<T>(IDbConnection cnn, Comman ...@@ -827,4 +827,4 @@ private async static Task<T> ExecuteScalarImplAsync<T>(IDbConnection cnn, Comman
return Parse<T>(result); return Parse<T>(result);
} }
} }
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment