Ejemplo n.º 1
0
        public static (string CommandText, List <IDbDataParameter> Parameters) Obsolete_GetPositionalCommandTextAndParameters(this IDbCommand command, char parameterPrefix = '@')
        {
            var namedParameterPrefixPattern = Obsolete_GetNamedParameterPrefixPattern(parameterPrefix);
            var newParameters  = new List <IDbDataParameter>();
            var newCommandText = namedParameterPrefixPattern.Replace(command.CommandText, evaluator => {
                var match     = evaluator.Groups[1].Value;
                var parameter = (from p in command.Parameters.OfType <IDbDataParameter>()
                                 where p.ParameterName == match.TrimStart(parameterPrefix)
                                 select command.CloneParameter(p)).FirstOrDefault();
                if (parameter != null)
                {
                    parameter.ParameterName = $"{parameter.ParameterName}_{newParameters.Count}";
                    newParameters.Add(parameter);
                    return("?");
                }
                return(match);
            });

            return(newCommandText, newParameters);
        }