/// <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(',')); }
/// <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); }
public int Delete(DBEntity entity) { return(new DeleteAction(this.dbContext, this.ilog, entity._TableCode).Where(TableFilter.New().Equals("ID", entity.ID)).ExecuteNonQuery()); }
/// <summary> /// 为容器添加子容器 /// </summary> /// <param name="childFilter">子容器</param> /// <returns>返回this</returns> public TableFilter AddFilter(TableFilter childFilter) { this.ChildFilters.Add(childFilter); this.LastAddedFilter = childFilter; return(this); }