protected void SetupParameters(DbCommand cmd)
{
ParamNames = new string[0];
if (_args.Length > 0)
{
var paramDict = CreateParamsDictionary(_args);
var allp = cmd.Parameters;
List<string> pnames = new List<string>();
StringBuilder sb =null;
var lastParamCount = _args.Length;
IDbDataParameter p = null;
foreach (var kv in paramDict)
{
if (kv.Value.IsListParam())
{
if (sb == null)
{
sb = new StringBuilder();
}
else sb.Clear();
var listParam = kv.Value as IEnumerable;
foreach (var val in listParam)
{
p = cmd.CreateParameter();
sb.Append("@" + lastParamCount + ",");
pnames.Add(lastParamCount.ToString());
Provider.SetupParameter(p, lastParamCount.ToString(), val);
allp.Add(p);
lastParamCount++;
}
sb.Remove(sb.Length - 1, 1);
_sql = _sql.Replace("@" + kv.Key, sb.ToString());
}
else
{
p = cmd.CreateParameter();
Provider.SetupParameter(p, kv.Key, kv.Value);
pnames.Add(kv.Key);
allp.Add(p);
}
}
ParamNames = pnames.ToArray();
}
}