public override void EmitParameterized(ParameterizedSqlProcessor processor, string parameterPrefix = "p")
        {
            if (string.IsNullOrWhiteSpace(parameterPrefix))
            {
                throw new ArgumentOutOfRangeException("parameterPrefix must be alphanumeric");
            }

            var sqlParameters = new DynamicParameters();

            StringBuilder sb = new StringBuilder();
            bool          precedeWithSpace = false;
            int           parameterCount   = 0;

            foreach (var fragment in statement)
            {
                if (precedeWithSpace)
                {
                    sb.Append(' ');
                }

                var sqlParam = fragment as ISqlParameter;
                if (sqlParam != null)
                {
                    var parameterName = parameterPrefix + parameterCount.ToString();
                    sb.Append($"@{parameterName}");
                    sqlParameters.Add(parameterName, sqlParam.ParameterValue);
                    precedeWithSpace = true;
                    parameterCount++;
                }
                else
                {
                    fragment.Emit((val) =>
                    {
                        sb.Append(val);
                        precedeWithSpace = val[val.Length - 1] != ' ';
                    });
                }
            }
            processor(sb.ToString(), sqlParameters);
        }
Beispiel #2
0
 ///-------------------------------------------------------------------------------------------------
 /// <summary>   Emits the given fragment to a function to handle it
 ///             as a parameterized SQL statement. </summary>
 ///
 /// <param name="processor">        Function to handle the SQL and parameters. </param>
 /// <param name="parameterPrefix">  (Optional) The parameter prefix. </param>
 public virtual void EmitParameterized(ParameterizedSqlProcessor processor, string parameterPrefix = "p")
 {
     processor(Escape(Value), new DynamicParameters());
 }