示例#1
0
        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);
        }
示例#2
0
        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);
        }