From 2ead242828fe61599c40a0daf143ff3dccede3d5 Mon Sep 17 00:00:00 2001 From: Sergey Kuznetsov Date: Fri, 11 Sep 2015 01:59:06 +0300 Subject: [PATCH] fix Cast at QueryAsync --- Dapper NET45/SqlMapperAsync.cs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Dapper NET45/SqlMapperAsync.cs b/Dapper NET45/SqlMapperAsync.cs index 6b85e3b..3022e19 100644 --- a/Dapper NET45/SqlMapperAsync.cs +++ b/Dapper NET45/SqlMapperAsync.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using System.Data; using System.Data.Common; +using System.Globalization; using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -107,9 +108,20 @@ private static async Task> QueryAsync(this IDbConnection cnn, if (command.Buffered) { List buffer = new List(); + var convertToType = Nullable.GetUnderlyingType(effectiveType) ?? effectiveType; while (await reader.ReadAsync(cancel).ConfigureAwait(false)) { - buffer.Add((T)func(reader)); + object val = func(reader); + if (val == null || val is T) + { + buffer.Add((T) val); + } + else + { + buffer.Add((T)Convert.ChangeType(val, convertToType, CultureInfo.InvariantCulture)); + } + + } while (await reader.NextResultAsync().ConfigureAwait(false)) { } command.OnCompleted(); -- GitLab