/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="tableName"></param> /// <param name="connection"></param> /// <param name="transaction"></param> /// <returns></returns> internal static async Task <Func <DbDataReader, ExpandoObject> > GetAsync(DbDataReader reader, string tableName, IDbConnection connection, IDbTransaction transaction) { var result = (Func <DbDataReader, ExpandoObject>)null; var key = GetKey(reader, tableName, connection); if (cache.TryGetValue(key, out result) == false) { result = await FunctionFactory.CompileDataReaderToExpandoObjectAsync(reader, tableName, connection, transaction); cache.TryAdd(key, result); } return(result); }