private ParametrizedSqlPart CreateWhereClause(SelectQuery query) { var context = new ConditionGeneratorContext(); var columnTypeMap = query.Columns.ToDictionary(x => x.ColumnName, x => x.DbType); var sb = new StringBuilder(); var parameters = new List <SqlQueryParameter>(); foreach (var condition in query.Conditions) { if (sb.Length > 0) { sb.Append(" AND "); } var conditionPart = CreateCondition(condition, columnTypeMap, context); sb.Append(conditionPart.Sql); parameters.AddRange(conditionPart.Parameters); } var sqlPart = new ParametrizedSqlPart() { Sql = sb.ToString(), Parameters = parameters }; return(sqlPart); }
private ParametrizedSqlPart CreateConditionWithValue( FilterConditionDTO condition, object value, ConditionGeneratorContext context) { var paramName = context.GetNextParameterName(); var sb = new StringBuilder(); sb.Append("("); sb.Append("["); sb.Append(condition.Field); sb.Append("]"); sb.Append(" "); sb.Append(GetSqlOperator(condition.Operator)); sb.Append(" "); sb.Append(paramName); sb.Append(")"); var sqlPart = new ParametrizedSqlPart() { Sql = sb.ToString(), Parameters = new List <SqlQueryParameter>() { new SqlQueryParameter(paramName, value != null ? value : DBNull.Value) } }; return(sqlPart); }