/// <summary>
 /// Adds a unary where expression to the query.
 /// </summary>
 /// <typeparam name="TRecord">The record type of the query builder</typeparam>
 /// <param name="queryBuilder">The query builder</param>
 /// <param name="fieldName">The name of one of the columns in the query. The where condition will be evaluated against the value of this column.</param>
 /// <param name="operand">The SQL operator to be used in the where clause</param>
 /// <param name="value">The value to compare against the column values. It will be added to the query as a parameter.</param>
 /// <returns>The query builder that can be used to further modify the query, or execute the query</returns>
 public static IQueryBuilder <TRecord> Where <TRecord>(this IQueryBuilder <TRecord> queryBuilder, string fieldName,
                                                       UnarySqlOperand operand, object value) where TRecord : class
 {
     return(queryBuilder.WhereParameterised(fieldName, operand, new Parameter(fieldName))
            .ParameterValue(value));
 }
Example #2
0
        public IUnaryParameterQueryBuilder <TRecord> WhereParameterised(string fieldName, UnarySqlOperand operand, Parameter parameter)
        {
            var uniqueParameter = new UniqueParameter(uniqueParameterNameGenerator, parameter);

            selectBuilder.AddWhere(new UnaryWhereParameter(fieldName, operand, uniqueParameter));
            return(new UnaryParameterQueryBuilder <TRecord>(Parameter(uniqueParameter), uniqueParameter));
        }
        static IQueryBuilder <TRecord> AddUnaryWhereClauseFromExpression <TRecord>(IQueryBuilder <TRecord> queryBuilder, UnarySqlOperand operand, BinaryExpression binaryExpression)
            where TRecord : class
        {
            var property = GetProperty(binaryExpression.Left);

            var value     = GetValueFromExpression(binaryExpression.Right, property.PropertyType);
            var fieldName = property.Name;

            return(queryBuilder.Where(fieldName, operand, value));
        }
Example #4
0
 public UnaryWhereParameter(string fieldName, UnarySqlOperand operand, Parameter parameter)
 {
     this.parameter = parameter;
     FieldName      = fieldName;
     Operand        = operand;
 }
Example #5
0
 public IUnaryParameterQueryBuilder <TRecord> WhereParameterised(string fieldName, UnarySqlOperand operand, Parameter parameter)
 {
     return(Builder.WhereParameterised(fieldName, operand, parameter));
 }
Example #6
0
 public UnaryWhereClause(IWhereFieldReference whereFieldReference, UnarySqlOperand operand, string parameterName)
 {
     this.whereFieldReference = whereFieldReference;
     this.operand             = operand;
     this.parameterName       = parameterName;
 }
        public IUnaryParameterDeleteQueryBuilder <TRecord> WhereParameterised(string fieldName, UnarySqlOperand operand,
                                                                              Parameter parameter)
        {
            var uniqueParameter = new UniqueParameter(uniqueParameterNameGenerator, parameter);

            return(new UnaryParameterDeleteQueryBuilder <TRecord>(
                       AddWhereClause(new UnaryWhereClause(new WhereFieldReference(fieldName), operand, uniqueParameter.ParameterName)),
                       uniqueParameter));
        }
        static IQueryBuilder <TRecord> AddUnaryWhereClauseFromExpression <TRecord>(IQueryBuilder <TRecord> queryBuilder, UnarySqlOperand operand, BinaryExpression binaryExpression)
            where TRecord : class
        {
            var property = GetProperty(binaryExpression.Left);

            var value     = GetValueFromExpression(binaryExpression.Right, property.PropertyType);
            var fieldName = property.Name;

            if (value == null && new[] { UnarySqlOperand.Equal, UnarySqlOperand.NotEqual }.Contains(operand))
            {
                return(operand == UnarySqlOperand.Equal ? queryBuilder.WhereNull(fieldName) : queryBuilder.WhereNotNull(fieldName));
            }
            return(queryBuilder.Where(fieldName, operand, value));
        }