/// <summary>
        ///  生成@xxxx参数
        /// </summary>
        /// <param name="tableFilter"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public string ParseTableDBParam(TableFilter tableFilter, DBParamCollection parameters)
        {
            string result = string.Empty;

            foreach (var child in tableFilter.ChildFilters)
            {
                foreach (var value in child.FilterValue.ConvertTostring().Split(','))
                {
                    var param = new DBParam(child.FilterName, value);
                    parameters.Add(param);
                    result += param.ParamName + ",";
                }
            }
            return(result.TrimEnd(','));
        }
예제 #2
0
        /// <summary>
        /// 添加过滤条件
        /// </summary>
        /// <param name="operateMode">过滤操作符</param>
        /// <param name="filterValue">过滤字段,如果值为空,抛出异常</param>
        /// <param name="filterValue">过滤字段的值,如果值为空,则不加入此过滤信息 例外:ISNULL操作符</param>
        /// <param name="not">是否取反</param>
        /// <returns>返回this</returns>
        public TableFilter AddFilter(EOperateMode operateMode, string filterName, object filterValue, bool not = false)
        {
            if (operateMode == EOperateMode.IsNull)
            {
                filterValue = "0";//占位符。因为解析filter的时候filtervalue为空会跳过这个条件
            }
            if (string.IsNullOrWhiteSpace(filterName))
            {
                throw new Exception("过滤条件字段名称能为空, 无法添加");
            }
            if (operateMode != EOperateMode.IsNull && (filterValue == null || string.IsNullOrWhiteSpace(filterValue.ToString())))
            {
                return(this);
            }
            var xmlFilter = new TableFilter(operateMode, filterName, filterValue, not);

            this.LastAddedFilter = xmlFilter;
            this.ChildFilters.Add(xmlFilter);
            return(this);
        }
        /// <summary>
        /// insert 生成values()参数,与列名
        /// </summary>
        /// <param name="tableFilter"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public string ParseTableColumns(TableFilter tableFilter, DBParamCollection parameters, out string columns)
        {
            string result = string.Empty;

            columns = string.Empty;
            foreach (var child in tableFilter.ChildFilters)
            {
                if (child.FilterValue.IsNullOrEmpty())
                {
                    continue;
                }
                foreach (var value in child.FilterValue.ConvertTostring().Split(','))
                {
                    var param = new DBParam(child.FilterName, value);
                    columns += child.FilterName + ",";
                    parameters.Add(param);
                    result += param.ParamName + ",";
                }
            }
            columns = columns.TrimEnd(',');
            return(result.TrimEnd(','));
        }
        public static string Build(this TableFilter tableFilter, DBParamCollection parameters)
        {
            TableFilterBuilder b = new TableFilterBuilder();

            return(b.ParseTableFilter(tableFilter, parameters));
        }
        public string ParseTableFilter(TableFilter tableFilter, DBParamCollection parameters)
        {
            if (null == tableFilter)
            {
                return("1=1");
            }
            string result = string.Empty;

            if (tableFilter.IsContainer)
            {
                #region 遍历加载子条件

                foreach (var child in tableFilter.ChildFilters)
                {
                    child.MainTable = tableFilter.MainTable;
                    var filterString = ParseTableFilter(child, parameters);
                    if (string.IsNullOrWhiteSpace(filterString))
                    {
                        continue;
                    }
                    if (!string.IsNullOrEmpty(result))
                    {
                        result += tableFilter.And ? " AND " : " OR ";
                    }
                    result += filterString;
                }
                if (!string.IsNullOrEmpty(result))
                {
                    result = string.Format("{0}({1})", tableFilter.Not ? "NOT" : string.Empty, result);
                }
                else
                {
                    result = "1=1";
                }

                #endregion 遍历加载子条件
            }
            else
            {
                if (tableFilter.FilterValue.IsNullOrEmpty() && tableFilter.OperateMode != EOperateMode.IsNull & tableFilter.OperateMode != EOperateMode.IsNotNull)
                {
                    return(result);
                }
                if (tableFilter.OperateMode == EOperateMode.In)
                {
                    string parmsString = string.Empty;
                    foreach (var value in tableFilter.FilterValue.ConvertTostring().Split(','))
                    {
                        var param = new DBParam(tableFilter.FilterName, value);
                        parameters.Add(param);
                        parmsString += param.ParamName + ",";
                    }
                    result = string.Format("{0}{1} IN ({2})", tableFilter.FilterName, (tableFilter.Not ? " NOT" : string.Empty), parmsString.TrimEnd(','));
                }
                else
                {
                    var paramValue = string.Empty;
                    if (tableFilter.OperateMode == EOperateMode.LikeLeft)
                    {
                        paramValue = $"{tableFilter.FilterValue}%";
                    }
                    else if (tableFilter.OperateMode == EOperateMode.LikeRight)
                    {
                        paramValue = $"%{tableFilter.FilterValue}";
                    }
                    else if (tableFilter.OperateMode == EOperateMode.LikeRight)
                    {
                        paramValue = $"%{tableFilter.FilterValue}%";
                    }
                    var param = new DBParam(tableFilter.FilterName, paramValue.IsNullOrEmpty() ? tableFilter.FilterValue : paramValue);
                    if (tableFilter.OperateMode != EOperateMode.IsNull && tableFilter.OperateMode != EOperateMode.IsNotNull)
                    {
                        parameters.Add(param);
                    }
                    result = tableFilter.FilterName + GetOperateFilter(tableFilter.OperateMode, param.ParamName, parameters.GetStringPlus);
                    if (tableFilter.Not)
                    {
                        result = "NOT(" + result + ")";
                    }
                }
            }
            return(result);
        }
예제 #6
0
 public int Delete(DBEntity entity)
 {
     return(new DeleteAction(this.dbContext, this.ilog, entity._TableCode).Where(TableFilter.New().Equals("ID", entity.ID)).ExecuteNonQuery());
 }
예제 #7
0
 /// <summary>
 /// 为容器添加子容器
 /// </summary>
 /// <param name="childFilter">子容器</param>
 /// <returns>返回this</returns>
 public TableFilter AddFilter(TableFilter childFilter)
 {
     this.ChildFilters.Add(childFilter);
     this.LastAddedFilter = childFilter;
     return(this);
 }