private static Action <IDbCommand, TEntity> GetActionCache(int hashKey, string sql, IOrmProvider provider, bool isPk) { Action <IDbCommand, TEntity> result; if (!actionCache.TryGetValue(hashKey, out result)) { if (isPk) { result = RepositoryHelper.CreateParametersHandler <TEntity>(provider.ParamPrefix, typeof(TEntity), Mapper.PrimaryKeys); } else { var colMappers = Mapper.MemberMappers.Values.Where(p => Regex.IsMatch(sql, @"[?@:]" + p.MemberName + "([^a-z0-9_]+|$)", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant)); result = RepositoryHelper.CreateParametersHandler <TEntity>(provider.ParamPrefix, typeof(TEntity), colMappers); } actionCache.TryAdd(hashKey, result); } return(result); }