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>
......
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