void PopulateParameters(IDbCommand cmd, string sql, object parameters = null) { cmd.Parameters.Clear(); cmd.CommandText = sql; if (parameters == null) { return; } if (cmd.CommandType == CommandType.StoredProcedure) { foreach (var propName in ReflectionUtilities.GetProperties(parameters)) { cmd.Parameters.Add(GetParam(cmd, _namingConvention.ConvertToDbName(propName), ReflectionUtilities.GetPropertyValue <object>(propName, parameters))); } } else { var sqlParams = _paramParser.GeSqlParams(sql); foreach (var sqlParam in sqlParams) { var cleanParam = _paramParser.CleanParameter(sqlParam); var pocoNme = _namingConvention.ConvertToPocoName(cleanParam); var paramValue = ReflectionUtilities.GetPropertyValue <object>(pocoNme, parameters) ?? DBNull.Value; var parameter = GetParam(cmd, cleanParam, paramValue); cmd.Parameters.Add(parameter); } } }