Ejemplo n.º 1
0
        private WhereBuilder Append(Expression property, QueryOperatorType op, object value, string type)
        {
            if (property != null && value != null)
            {
                if (!__sql.IsEmpty_())
                {
                    __sql.Append(type);
                }

                __sql.Append("(");
                __sql.Append(__db.GetColumnName(property));
                __sql.Append(this.GetOperator(op));
                __sql.AppendFormat("@{0}", this.Params.Count);
                __sql.Append(")");

                switch (op)
                {
                case QueryOperatorType.Contains:
                    value = "%" + value.ToString().Trim('%') + "%";
                    break;

                case QueryOperatorType.StartsWith:
                    value = value.ToString().Trim('%') + "%";
                    break;

                case QueryOperatorType.EndsWith:
                    value = "%" + value.ToString().Trim('%');
                    break;
                }
                this.Params.Add(value);
            }

            return(this);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 获取查询操作符
        /// </summary>
        /// <param name="op">操作符类型</param>
        /// <returns>查询操作符</returns>
        /// <exception cref="System.NotSupportedException">指定操作符未实现</exception>
        protected virtual string GetOperator(QueryOperatorType op)
        {
            switch (op)
            {
            case QueryOperatorType.Equal:
                return(" = ");

            case QueryOperatorType.NotEqual:
                return(" <> ");

            case QueryOperatorType.GreaterThan:
                return(" > ");

            case QueryOperatorType.LessThan:
                return(" < ");

            case QueryOperatorType.GreaterThanOrEqual:
                return(" >= ");

            case QueryOperatorType.LessThanOrEqual:
                return(" <= ");

            case QueryOperatorType.Contains:
            case QueryOperatorType.StartsWith:
            case QueryOperatorType.EndsWith:
                return(" LIKE ");

            default:
                throw new NotSupportedException("不支持 “{0}” 操作符".F(op));
            }
        }
Ejemplo n.º 3
0
        public static string ConvertToSqlOperator(this QueryOperatorType oOperator)
        {
            switch (oOperator)
            {
            case QueryOperatorType.Equals:
                return("=");

            case QueryOperatorType.NotEquals:
                return("<>");

            case QueryOperatorType.GreaterThan:
                return(">");

            case QueryOperatorType.GreaterOrEquals:
                return(">=");

            case QueryOperatorType.LessThan:
                return("<");

            case QueryOperatorType.LessOrEquals:
                return("<=");

            case QueryOperatorType.Like:
                return("LIKE");

            case QueryOperatorType.NotLike:
                return("NOT LIKE");

            default:
                throw new ArgumentOutOfRangeException("Operator");
            }
        }
Ejemplo n.º 4
0
		private WhereBuilder Append(Expression property, QueryOperatorType op, object value, string type)
		{
			if(property != null && value != null)
			{
				if(!__sql.IsEmpty)
					__sql.Append(type);

				__sql.Append("(");
				__sql.Append(__db.GetColumnName(property));
				__sql.Append(this.GetOperator(op));
				__sql.AppendFormat("@{0}", this.Params.Count);
				__sql.Append(")");

				switch(op)
				{
					case QueryOperatorType.Contains:
						value = "%" + value.ToString().Trim('%') + "%";
						break;
					case QueryOperatorType.StartsWith:
						value = value.ToString().Trim('%') + "%";
						break;
					case QueryOperatorType.EndsWith:
						value = "%" + value.ToString().Trim('%');
						break;
				}
				this.Params.Add(value);
			}

			return this;
		}
Ejemplo n.º 5
0
        /// <summary>
        /// 获取查询操作符
        /// </summary>
        /// <param name="op">操作符类型</param>
        /// <returns>查询操作符</returns>
        /// <exception cref="System.NotSupportedException">指定操作符未实现</exception>
        protected virtual string GetOperator(QueryOperatorType op)
        {
            switch (op)
            {
            case QueryOperatorType.Equal:
                return(" = ");

            case QueryOperatorType.NotEqual:
                return(" <> ");

            case QueryOperatorType.GreaterThan:
                return(" > ");

            case QueryOperatorType.LessThan:
                return(" < ");

            case QueryOperatorType.GreaterThanOrEqual:
                return(" >= ");

            case QueryOperatorType.LessThanOrEqual:
                return(" <= ");

            case QueryOperatorType.Contains:
            case QueryOperatorType.StartsWith:
            case QueryOperatorType.EndsWith:
                return(" LIKE ");

            default:
                throw new NotSupportedException(string.Format("QueryOperatorType:{0} is not supportd", op.ToString()));
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 查询条件
        /// </summary>
        /// <param name="property">字段栏表达式</param>
        /// <param name="op">比较运算符</param>
        /// <param name="value">值</param>
        /// <returns>更新构建器</returns>
        public SetBuilder <T> WhereOr(Expression property, QueryOperatorType op, object value)
        {
            if (__where == null)
            {
                __where = new WhereBuilder(__db, this.Params, false);
            }
            __where.AppendOr(property, op, value);

            return(this);
        }
 public static ParmInfo AddParameter(string parmName, object parmValue, QueryOperatorType parmQueryOperator, LogicalOperatorType parmLogicalOperator, DbType parmDbType, ParameterDirection parmParameterDirection = ParameterDirection.Input)
 {
     return(new ParmInfo
     {
         Name = parmName,
         DbType = parmDbType,
         ParameterDirection = parmParameterDirection,
         DataValue = parmValue,
         LogicalOperator = parmLogicalOperator,
         QueryOperator = QueryOperatorType.Equals
     });
 }
Ejemplo n.º 8
0
        /// <summary>
        /// 获取查询操作符
        /// </summary>
        /// <param name="expType">表达式树节点类型</param>
        /// <returns>查询操作符</returns>
        /// <exception cref="System.NotSupportedException">指定操作符未实现</exception>
        protected string GetOperator(QueryOperatorType expType, bool valueIsNull)
        {
            if (valueIsNull)
            {
                switch (expType)
                {
                case QueryOperatorType.Equal:
                    return(" IS ");

                case QueryOperatorType.NotEqual:
                    return(" IS NOT ");
                }
            }

            return(base.GetOperator(expType));
        }
Ejemplo n.º 9
0
        protected override string GetOperator(QueryOperatorType op, bool valueIsNull)
        {
            if (valueIsNull)
            {
                switch (op)
                {
                case QueryOperatorType.Equal:
                    return(" IS ");

                case QueryOperatorType.NotEqual:
                    return(" IS NOT ");

                default: break;
                }
            }

            return(base.GetOperator(op));
        }
Ejemplo n.º 10
0
 /// <summary>
 /// 查询条件
 /// </summary>
 /// <param name="property">字段栏表达式</param>
 /// <param name="op">比较运算符</param>
 /// <param name="value">值</param>
 /// <returns>更新构建器</returns>
 public SetBuilder <T> WhereOr(Expression <Func <T, object> > property, QueryOperatorType op, object value)
 {
     return(this.WhereOr((Expression)property, op, value));
 }
Ejemplo n.º 11
0
 /// <summary>添加 WHERE OR 子句</summary>
 /// <param name="property">字段栏表达式</param>
 /// <param name="op">比较运算符</param>
 /// <param name="value">值</param>
 /// <returns>WHERE 构建器</returns>
 internal JoinBuilder AppendOr(Expression property, QueryOperatorType op, object value)
 {
     return(this.Append(property, op, value, " OR "));
 }
Ejemplo n.º 12
0
 /// <summary>添加 WHERE 子句</summary>
 /// <param name="property">字段栏表达式</param>
 /// <param name="op">比较运算符</param>
 /// <param name="value">值</param>
 /// <returns>WHERE 构建器</returns>
 internal WhereBuilder Append(Expression property, QueryOperatorType op, object value)
 {
     return(this.Append(property, op, value, " AND "));
 }
Ejemplo n.º 13
0
		/// <summary>添加 WHERE OR 子句</summary>
		/// <param name="property">字段栏表达式</param>
		/// <param name="op">比较运算符</param>
		/// <param name="value">值</param>
		/// <returns>WHERE 构建器</returns>
		internal WhereBuilder AppendOr(Expression property, QueryOperatorType op, object value)
		{
			return this.Append(property, op, value, " OR ");
		}