diff --git a/Dapper/SqlMapper.cs b/Dapper/SqlMapper.cs
index acc4d9a9..a2402f1c 100644
--- a/Dapper/SqlMapper.cs
+++ b/Dapper/SqlMapper.cs
@@ -232,36 +232,36 @@ namespace Dapper
/// The Field we should split and read the second object from (default: id)
/// Number of seconds before command execution timeout
///
- public static IEnumerable Query(this IDbConnection cnn, string sql, Action map, dynamic param = null, IDbTransaction transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null)
+ public static IEnumerable Query(this IDbConnection cnn, string sql, Func map, dynamic param = null, IDbTransaction transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null)
{
- return MultiMap(cnn, sql, map, param as object, transaction, buffered, splitOn, commandTimeout);
+ return MultiMap(cnn, sql, map, param as object, transaction, buffered, splitOn, commandTimeout);
}
- public static IEnumerable Query(this IDbConnection cnn, string sql, Action map, dynamic param = null, IDbTransaction transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null)
+ public static IEnumerable Query(this IDbConnection cnn, string sql, Func map, dynamic param = null, IDbTransaction transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null)
{
- return MultiMap(cnn, sql, map, param as object, transaction, buffered, splitOn, commandTimeout);
+ return MultiMap(cnn, sql, map, param as object, transaction, buffered, splitOn, commandTimeout);
}
- public static IEnumerable Query(this IDbConnection cnn, string sql, Action map, dynamic param = null, IDbTransaction transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null)
+ public static IEnumerable Query(this IDbConnection cnn, string sql, Func map, dynamic param = null, IDbTransaction transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null)
{
- return MultiMap(cnn, sql, map, param as object, transaction, buffered, splitOn, commandTimeout);
+ return MultiMap(cnn, sql, map, param as object, transaction, buffered, splitOn, commandTimeout);
}
- public static IEnumerable Query(this IDbConnection cnn, string sql, Action map, dynamic param = null, IDbTransaction transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null)
+ public static IEnumerable Query(this IDbConnection cnn, string sql, Func map, dynamic param = null, IDbTransaction transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null)
{
- return MultiMap(cnn, sql, map, param as object, transaction, buffered, splitOn, commandTimeout);
+ return MultiMap(cnn, sql, map, param as object, transaction, buffered, splitOn, commandTimeout);
}
class DontMap {}
- static IEnumerable MultiMap(this IDbConnection cnn, string sql, object map, object param = null, IDbTransaction transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null)
+ static IEnumerable MultiMap(this IDbConnection cnn, string sql, object map, object param = null, IDbTransaction transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null)
{
- var results = MultiMapImpl(cnn, sql, map, param, transaction, splitOn, commandTimeout);
+ var results = MultiMapImpl(cnn, sql, map, param, transaction, splitOn, commandTimeout);
return buffered ? results.ToList() : results;
}
- static IEnumerable MultiMapImpl(this IDbConnection cnn, string sql, object map, object param = null, IDbTransaction transaction = null, string splitOn = "Id", int? commandTimeout = null)
+ static IEnumerable MultiMapImpl(this IDbConnection cnn, string sql, object map, object param = null, IDbTransaction transaction = null, string splitOn = "Id", int? commandTimeout = null)
{
- var identity = new Identity(sql, cnn, typeof(T), param == null ? null : param.GetType(), otherTypes: new[] { typeof(T), typeof(U), typeof(V), typeof(Z), typeof(X) });
+ var identity = new Identity(sql, cnn, typeof(TFirst), param == null ? null : param.GetType(), otherTypes: new[] { typeof(TFirst), typeof(TSecond), typeof(TThird), typeof(TFourth), typeof(TFifth) });
var info = GetCacheInfo(param, identity);
using (var cmd = SetupCommand(cnn, transaction, sql, info.ParamReader, param, commandTimeout))
@@ -291,30 +291,30 @@ namespace Dapper
var otherDeserializer = new List