/// <summary> /// 输出Json /// </summary> /// <param name="condition"></param> /// <returns></returns> public string ToJson(IQueryCondition condition) { //TODO:事务处理?OnToJsonEvent(condition,Iconnection,IsTransfer) && 验证过滤 string result; if (OnToJsonEvent != null) { OnToJsonEvent(condition); } if (ExpandEvent != null) { ExpandEvent(this); } if (UnToJsonEvent != null) { UnToJsonEvent(this); } if (_jsonMessage.ContainsKey(Enum_operType.Seach.ToString())) { result = _jsonMessage[Enum_operType.Seach.ToString()]; } else { TableInfo ti = new TableInfo(); result = ti.ToJson(_jsonMessage, false); } return(result); }
private void Search(IQueryCondition condition, TableInfo ti) { Order[] o = string.IsNullOrEmpty(condition.Sort) ? new Order[] { new Order(condition.PriMaryKeyName, OrderMode.Asc) } : new Order[] { new Order(condition.Sort, (OrderMode)condition.Sord), new Order(condition.PriMaryKeyName, OrderMode.Asc) }; try { if (condition.JoinInfo != null) { InstanceCriteria(condition); } //初始化查询条件(有表连接的情况下)。 tablename = ti.TableName; //设置表名 condition.total = IDatabase.Total(ti.TableName, condition.Condition); //总记录数 var aList = IDatabase.GetDtByCondition <TableInfo>(ti.TableName, condition.Condition, o, condition.Begin - 1, condition.Count, condition.Fields); if (condition.JoinInfo != null) { aList[0].Table = IDatabase.Join(aList[0].Table, condition); //表连接 } if (!condition.JsonMessage.ContainsKey(Enum_operType.Seach.ToString())) { condition.JsonMessage.Add(Enum_operType.Seach.ToString(), aList[0].ToJson().Replace("{0}", condition.total.ToString(CultureInfo.InvariantCulture)).Replace("{1}", "200").Replace("{2}", "success").Replace("{3}", condition.Page.ToString(CultureInfo.InvariantCulture)).Replace("{4}", condition.totalPage.ToString(CultureInfo.InvariantCulture))); //查询结果特殊处理(回发消息) } } catch (Exception ex) { QueryCondition.SetMessage(condition, condition.TableName, true, "search", ex.Message); We7.Framework.LogHelper.WriteLog(typeof(JsonResult), ex); } }
/// <summary> /// Parses the query element string and returns the parsedQueryIdCookie to be /// used later during Search() or MatchElement() or GetChildren() call for /// either searching or matching or getting children that has the same query string. /// </summary> /// <param name="queryElement">The query element string to parse.</param> /// <param name="parsedQueryIdCookie">The cookie of the parsed QueryId to be used later.</param> /// <returns>The remaining part of query element string that is not supported /// by this technology manager. The framework may or may not support the remaining part.</returns> public override string ParseQueryId(string queryElement, out object parsedQueryIdCookie) { // Use the AndCondition.Parse() API to get the condition object // from string. Here, all the properties possible in query id are // supported by this technology manager itself. IQueryCondition condition = null; try { condition = AndCondition.Parse(queryElement); } catch (ArgumentException) { } if (condition == null) { // Implies parse failed. This should not be the case. Debug.Fail("ParseQueryId failed"); parsedQueryIdCookie = null; return(queryElement); } // Store the condition as the cookie to be used later. parsedQueryIdCookie = condition; return(string.Empty); }
/// <summary> /// 递归拼条件 用于表连接 /// </summary> private void getJoinCriteria(IQueryCondition condition, IJoin join, Criteria c, ref Criteria joincriteria) { if (c == null) { return; } if (!string.IsNullOrEmpty(c.Name) && join.MainField == c.Name) { joincriteria.Add(c.Type, join.JoinInfo[c.Name].ToField, c.Value); if (condition.Condition.Criterias != null) //移除 { condition.Condition.Criterias.RemoveAll(delegate(Criteria cri) { if (cri.Type == c.Type && (string.Compare(cri.Name, c.Name, true) == 0) && string.Compare(cri.Value.ToString(), c.Value.ToString(), true) == 0) { return(true); } else { return(false); } }); } } if (c.Criterias != null && c.Criterias.Count != 0) { for (int i = 0; i < c.Criterias.Count; i++) { getJoinCriteria(condition, join, c.Criterias[i], ref joincriteria); } } }
/// <summary> /// 修改数据 /// </summary> /// <param name="list">字段名</param> /// <param name="ti">实体</param> /// <param name="key">表名</param> /// <param name="isTransfer">是否</param> private static void TryUpData(IQueryCondition condition, List <string> list, TableInfo ti, string key, bool isTransfer = false) { IConnection conn = getDataBase(ti).IDatabase.CreateConnetion(key, true); try { int i = 1; if (condition.IsMulti) { i = getDataBase(ti).IDatabase.Update(ti.TableName, ti, list.ToArray(), condition.Condition); } else { i = getDataBase(ti).IDatabase.Update(ti.TableName, ti, list.ToArray(), conn); } conn.Commit(); } catch (Exception ex) { conn.Rollback(); We7.Framework.LogHelper.WriteLog(typeof(XMLAssistant), ex); QueryCondition.SetMessage(condition, "模型字段:" + condition.HasModelXml, true, "修改", ex.Message); } }
private void Search(IQueryCondition condition, TableInfo ti, MoldPanel mp) { #region 木有启用单表存储(适用于旧版本) 处理逻辑 //xml解析字段 PanelContext data = mp.GetPanelContext(condition.ModelName, "list"); data.PageIndex = condition.Page; data.c = new Criteria(CriteriaType.Equals, "ModelName", condition.ModelName); //设置条件 if (condition.Condition != null) { data.c.Criterias.Add(condition.Condition); } ListResult result = new QueryCommand().Do(data) as ListResult; if (result != null) { DataTable dt = result.DataTable.Clone(); for (int i = 0; i < dt.Columns.Count; i++) { string name = dt.Columns[i].ColumnName.Clone().ToString(); bool isExist = FiledExists(condition.Fields, name); if (!isExist) { result.DataTable.Columns.Remove(name); } } //todo:XML数据源过滤信息? ti.Table = result.DataTable; string json = ti.ToJson(); condition.total = result.RecoredCount; condition.Page = result.PageIndex; condition.JsonMessage.Add(Enum_operType.Seach.ToString(), json.Replace("{0}", condition.total.ToString()).Replace("{1}", "200").Replace("{2}", "数据成功返回").Replace("{3}", condition.Page.ToString()).Replace("{4}", condition.totalPage.ToString())); //查询结果特殊处理 } #endregion }
private void InstanceCriteria(IQueryCondition condition) { if (condition.JoinInfo != null) { foreach (var join in condition.JoinInfo.Values) { Criteria joincriteria = new Criteria(CriteriaType.None); getJoinCriteria(condition, join, condition.Condition, ref joincriteria); if (joincriteria.Criterias != null && joincriteria.Criterias.Count != 0) { tablename = join.ToTableName; List <TableInfo> aList = IDatabase.GetDtByCondition <TableInfo>(join.ToTableName, joincriteria, new string[] { condition.PriMaryKeyName }); Criteria c = new Criteria(CriteriaType.None); if (aList[0].Table != null && aList[0].Table.Rows != null && aList[0].Table.Rows.Count > 0) { c.Mode = CriteriaMode.Or; foreach (DataRow item in aList[0].Table.Rows) { c.AddOr(CriteriaType.Equals, join.MainField, item[0]); } condition.Condition.Criterias.Add(c); } else { condition.Condition.Add(CriteriaType.Equals, condition.PriMaryKeyName, "no"); } } } } }
/// <summary> /// Declares a new <see cref="QueryConditionNode"/> with the passed parameters. /// This is only possible, if <see cref="DeclareCondition(string, QueryConditionType, object)"/> or /// <see cref="DeclareConditionNode(QueryConditionNodeType, Func{QueryConditionBuilder}, Func{QueryConditionBuilder})"/> /// have not yet been called. /// </summary> /// <param name="nodeType">defines how the two resulting conditionBuilder are logically /// evaluated together</param> /// <param name="leftConditionBuilder">a delegate that returns the <see cref="QueryConditionBuilder"/> /// for the LEFT condition sub-tree</param> /// <param name="rightConditionBuilder">a delegate that returns the <see cref="QueryConditionBuilder"/> /// for the RIGHT condition sub-tree</param> /// <returns>a reference of itself</returns> public QueryConditionBuilder DeclareConditionNode( QueryConditionNodeType nodeType, Func <QueryConditionBuilder> leftConditionBuilder, Func <QueryConditionBuilder> rightConditionBuilder) { if (this.QueryCondition != null) { throw new InvalidOperationException("Can't declare more than 1 condition on this layer"); } else if (leftConditionBuilder is null) { throw new ArgumentNullException(nameof(leftConditionBuilder)); } else if (rightConditionBuilder is null) { throw new ArgumentNullException(nameof(rightConditionBuilder)); } this.QueryCondition = new QueryConditionNode() { NodeType = nodeType, FirstCondition = leftConditionBuilder().Build(), SecondCondition = rightConditionBuilder().Build() }; return(this); }
public JsonForCondition() { if (!string.IsNullOrEmpty(We7.CMS.Accounts.Security.CurrentAccountID)) //判断是否登录 { condiction = new QueryCondition(HttpContext.Current.Request.Form); //初始化查询对象 condiction.OnToJsonEvent += new JsonResult().ToJson; /*begin*/ if (!string.IsNullOrEmpty(condiction.HasModelXml)) { bool isSingleTable = new MoldPanel().EnableSingleTable; if (condiction.OperType == Enum_operType.Update && !isSingleTable) { condiction.OnToJsonEvent += XMLAssistant.UpdataModel; } if (condiction.OperType == Enum_operType.Del && !isSingleTable) { condiction.OnToJsonEvent += XMLAssistant.DeleteModel; } } /*end*/ } else { } }
/// <summary> /// Declares a new <see cref="QueryCondition"/> with the passed parameters. /// This is only possible, if <see cref="DeclareCondition(string, QueryConditionType, object)"/> or /// <see cref="DeclareConditionNode(QueryConditionNodeType, Func{QueryConditionBuilder}, Func{QueryConditionBuilder})"/> /// have not yet been called. /// </summary> /// <param name="columnToCheck">the column to check against</param> /// <param name="conditionType">how should the column be compared against the compareValue</param> /// <param name="compareValue">the value used for comparing with the value in the column</param> /// <returns>a reference of itself</returns> public QueryConditionBuilder DeclareCondition( string columnToCheck, QueryConditionType conditionType, object compareValue) { if (this.QueryCondition != null) { throw new InvalidOperationException("Can't declare more than 1 condition on this layer"); } else if (string.IsNullOrEmpty(columnToCheck)) { throw new ArgumentNullException(nameof(columnToCheck)); } else if (compareValue == null) { throw new ArgumentNullException(nameof(compareValue)); } this.QueryCondition = new QueryCondition() { ColumnToCheck = columnToCheck, CompareValue = compareValue, ConditionType = conditionType }; return(this); }
/// <summary> /// Declares a uniting-condition from a set of <see cref="QueryConditionBuilder"/>. /// The single conditions are joined with a <see cref="QueryConditionNodeType.And"/> condition. /// </summary> /// <param name="builderSet">the set of builders to be joined</param> /// <returns>a uniting <see cref="QueryConditionBuilder"/> that contains all passed /// <see cref="QueryConditionBuilder"/>.</returns> public QueryConditionBuilder DeclareConditionFromBuilderSet( QueryConditionNodeType joiningNodeType, IEnumerable <QueryConditionBuilder> builderSet) { if (builderSet is null) { throw new ArgumentNullException(nameof(builderSet)); } else if (!builderSet.Any()) { throw new InvalidOperationException($"{nameof(builderSet)} is empty"); } QueryConditionBuilder agglomerativeConditionBuilder = null; foreach (var builder in builderSet) { agglomerativeConditionBuilder = agglomerativeConditionBuilder == null ? builder : new QueryConditionBuilder() .DeclareConditionNode( joiningNodeType, () => agglomerativeConditionBuilder, () => builder); } this.QueryCondition = agglomerativeConditionBuilder.QueryCondition; return(this); }
/* * private static void IncludeAttribute(IQueryExpression query, DocAttribute attr) * { * var exp = query.And(attr.AttrDef.Name); * * foreach (var sub in attr.Document.Attributes) * { * if (sub is DocAttribute) * { * if (((DocAttribute) sub).Document != null && HasDocumentValue(((DocAttribute) sub).Document)) * { * IncludeAttribute(exp, (DocAttribute) sub); * } * } * else if (sub is DocListAttribute) * { * // if (((DocListAttribute)attr).AddedDocIds != null) * } * else if (sub.ObjectValue != null) * { * if (sub is TextAttribute) * { * exp.Include(sub.AttrDef.Name).Contains(sub.ObjectValue.ToString()); * } * else * { * exp.Include(sub.AttrDef.Name).Eq(sub.ObjectValue); * } * } * } * } */ private static void IncludeAttribute(IQueryCondition cond, DocAttribute attr) { foreach (var sub in attr.Document.Attributes) { if (sub is DocAttribute) { if (((DocAttribute)sub).Document != null && HasDocumentValue(((DocAttribute)sub).Document)) { IncludeAttribute(cond.Include(sub.AttrDef.Name), (DocAttribute)sub); } } else if (sub is DocListAttribute) { // if (((DocListAttribute)attr).AddedDocIds != null) } else if (sub.ObjectValue != null) { if (sub is TextAttribute) { var txt = ((TextAttribute)sub).Value; if (!String.IsNullOrEmpty(txt)) { cond.Include(sub.AttrDef.Name).Contains(txt); } } else { cond.Include(sub.AttrDef.Name).Eq(sub.ObjectValue); } } } }
public IQueryCondition CreateQueryCondition( SampleStateKind sampleStates, ViewStateKind viewStates, InstanceStateKind instanceStates, string queryExpression, params string[] queryParameters) { IQueryCondition queryCondition = null; using (SequenceStringMarshaler marshaler = new SequenceStringMarshaler()) { if (marshaler.CopyIn(queryParameters) == DDS.ReturnCode.Ok) { IntPtr gapiPtr = Gapi.DataReader.create_querycondition( GapiPeer, sampleStates, viewStates, instanceStates, queryExpression, marshaler.GapiPtr); if (gapiPtr != IntPtr.Zero) { queryCondition = new QueryCondition(gapiPtr); } } } return(queryCondition); }
/// <summary> /// 获取模型的各种数量 /// </summary> /// <param name="condition"></param> public static void GetModelCount(IQueryCondition condition) { TableInfo ti = new TableInfo(condition.TableName); DataBaseForThinkment db = new DataBaseForThinkment(condition.TableName); try { int total = db.IDatabase.Total(ti.TableName, null); Criteria c = new Criteria(CriteriaType.Equals, "state", (int)ArticleStates.Started); int yetPublish = db.IDatabase.Total(ti.TableName, c); c = new Criteria(CriteriaType.Equals, "state", (int)ArticleStates.Stopped); int draft = db.IDatabase.Total(ti.TableName, c); c = new Criteria(CriteriaType.Equals, "state", (int)ArticleStates.Checking); int Checking = db.IDatabase.Total(ti.TableName, c); c = new Criteria(CriteriaType.Equals, "state", (int)ArticleStates.Overdued); int Overdued = db.IDatabase.Total(ti.TableName, c); Dictionary <string, string> dic = new Dictionary <string, string>(); dic.Add("yetPublish", yetPublish.ToString()); dic.Add("draft", draft.ToString()); dic.Add("Checking", Checking.ToString()); dic.Add("Overdued", Overdued.ToString()); dic.Add("total", total.ToString()); condition.JsonMessage.Add(Enum_operType.Seach.ToString(), ti.ToJson(dic, false)); } catch (Exception ex) { We7.Framework.LogHelper.WriteLog(typeof(ExpandClass), ex); } }
public GetModelCount() { if (!string.IsNullOrEmpty(We7.CMS.Accounts.Security.CurrentAccountID)) //判断是否登录 { condiction = new QueryCondition(HttpContext.Current.Request.Form); //初始化查询对象 condiction.OnToJsonEvent += ExpandClass.GetModelCount; } }
public JsonForCondition() { if (!string.IsNullOrEmpty(We7.CMS.Accounts.Security.CurrentAccountID)) //判断是否登录 { condiction = new QueryCondition(HttpContext.Current.Request.Form); //初始化查询对象 condiction.ResponseJsonEvent += JsonResult.ToJson; } }
protected string CreateWhereSql(IQueryCondition condition, QueryBuildInfo buildInfo) { if (condition != null) { return(((IAbstractCondition)condition).CreateSql(_dbLayer, buildInfo)); } return("/*Incorrect Where*/"); }
public async Task <IEnumerable <T> > GetAllConditionalAsync(IQueryCondition condition = null) { (var query, var queryParameters) = SqlQueryGenerator.GenerateSelectQuery(condition); return(await template.QueryObjectSetAsync( query, RowMapper, queryParameters) .ConfigureAwait(false)); }
/// <summary> /// Generates a UPDATE query that applies a set of values passed with a /// anonymous object, to a set of rows that fulfill the passed <see cref="IQueryCondition"/>. /// It is mandatory to use a anonymous object that only contains the Properties /// that should be updated, because a passed domain-object would result in a query /// updating all columns and that is not the desired behaviour most of the time. /// </summary> /// <param name="objectContainingChanges">the anonymous object containig the updated values</param> /// <param name="updateCondition">the condition, which rows should be updated</param> /// <returns>a query-<see cref="string"/> and a <see cref="QueryParameter[]"/> /// that contains the updated values and the values used in the WHERE clause. /// Both types of parameters are sanitized.</returns> public (string query, QueryParameter[] queryParameters) GenerateUpdateQuery( object objectContainingChanges, IQueryCondition updateCondition) { if (updateCondition is null) { throw new ArgumentNullException(nameof(updateCondition)); } if (objectContainingChanges is null) { throw new ArgumentNullException(nameof(objectContainingChanges)); } if (objectContainingChanges.GetType() == typeof(T)) { throw new InvalidOperationException( "You are not allowed to pass the domain object itself" + " -> pass a anonymous object containing the changes to apply"); } foreach (var currentProperty in objectContainingChanges.GetType().GetProperties()) { if (currentProperty.Name == "Id") { throw new InvalidOperationException( "Attempted to update Id column -> forbidden operation"); } else if (!typeof(T).GetProperties().Any(p => p.Name == currentProperty.Name)) { throw new InvalidOperationException( $"Property {currentProperty.Name} does not exist for type {typeof(T).Name}"); } var correctType = typeof(T).GetProperties() .First(p => p.Name == currentProperty.Name) .PropertyType; if (!(correctType == currentProperty.PropertyType)) { throw new InvalidOperationException( $"Property-Type mismatch of property {currentProperty.Name}; " + $"expected type {correctType.FullName}, actual type {currentProperty.PropertyType.FullName}"); } } var queryStringBuilder = new StringBuilder(); var queryParameters = new List <QueryParameter>(); queryStringBuilder.Append($"UPDATE [Hurace].[{typeof(T).Name}] SET"); AppendColumnValuesWithAssignment(queryStringBuilder, queryParameters, objectContainingChanges); queryStringBuilder.Append(" WHERE "); updateCondition.AppendTo(queryStringBuilder, queryParameters); return(queryStringBuilder.ToString(), queryParameters.ToArray()); }
public static PagingData <TEntity> GetPagingEdmData( PagingCondition pagingCondition, IQueryCondition <TEntity> queryCondition = null) { long recordCount; List <TEntity> recordData; Repository.GetPagingEdmData(pagingCondition, out recordData, out recordCount, queryCondition); return(new PagingData <TEntity>(recordCount, pagingCondition, recordData)); }
public static PagingData <TDto> GetPagingDtoData <TDto>( PagingCondition pagingCondition, IQueryCondition <TEntity> queryCondition = null) where TDto : class { long recordCount; List <TDto> recordData; Repository.GetPagingDtoData(pagingCondition, out recordData, out recordCount, queryCondition); return(new PagingData <TDto>(recordCount, pagingCondition, recordData)); }
/// <summary> /// 输出Json /// </summary> /// <param name="condition"></param> /// <returns></returns> public string ToJson(IQueryCondition condition) { if (ResponseJsonEvent != null) { return(ResponseJsonEvent(condition)); } else { return(string.Empty); } }
public async Task <int> DeleteAsync(IQueryCondition condition) { if (condition is null) { throw new ArgumentNullException(nameof(condition)); } (string query, QueryParameter[] parameters) = SqlQueryGenerator.GenerateDeleteQuery(condition); return(await template.ExecuteAsync(query, parameters) .ConfigureAwait(false)); }
private static void IncludeDocControl(IQueryCondition cond, AttrDef attr, BizControl control) { // var exp = query.And(attr.Name); if (attr.DocDefType == null) { throw new ApplicationException(String.Format("Не могу сформировать запрос! Атрибут \"{0}\" не ссылается на класс документа", attr.Name)); } var docDef = attr.DocDefType; foreach (var ctrl in control.Children) { if (!(ctrl is BizDataControl) || ((BizDataControl)ctrl).AttributeDefId == null) { continue; } var attributeDefId = ((BizDataControl)ctrl).AttributeDefId; if (attributeDefId != null) { var attrId = (Guid)attributeDefId; var sub = docDef.Attributes.FirstOrDefault(a => a.Id == attrId); if (sub != null) { if (ctrl is BizDocumentControl) { IncludeDocControl(cond, sub, ctrl); continue; } if (((BizDataControl)ctrl).ObjectValue == null) { continue; } if (sub.Type.Id == (short)CissaDataType.Text) { var txt = ((BizDataControl)ctrl).ObjectValue.ToString(); if (!String.IsNullOrEmpty(txt)) { cond.Include(sub.Name).Contains(txt); } } else { cond.Include(sub.Name).Eq(((BizDataControl)ctrl).ObjectValue); } } } } }
internal bool SetCondition(IQueryCondition condition) { if (condition == null) { throw new ArgumentNullException("condition"); } if (Conditions.ContainsKey(condition.GetType()) && Conditions [condition.GetType()] == condition) { return(false); } Conditions [condition.GetType()] = condition; return(true); }
public bool SetQueryCondition(string expression, string[] parameters) { IQueryCondition condition = dataReader.CreateQueryCondition( SampleStateKind.Any, ViewStateKind.Any, InstanceStateKind.Any, expression, parameters); listener.QueryCondition = condition; if (condition != null || !string.IsNullOrEmpty(expression)) { return(true); } return(false); }
private void Update(IQueryCondition condition, TableInfo ti) { try { int i = 0; var field = new List <string>(condition.Fields); field.Remove(condition.PriMaryKeyName); i = !condition.IsMulti ? IDatabase.Update(ti.TableName, ti, field.ToArray()) : IDatabase.Update(ti.TableName, ti, field.ToArray(), condition.Condition); QueryCondition.SetMessage(condition, condition.TableName, false, "修改", string.Empty, i); } catch (Exception ex) { QueryCondition.SetMessage(condition, condition.TableName, true, "修改", ex.Message); We7.Framework.LogHelper.WriteLog(typeof(JsonResult), ex); } }
/// <summary> /// Generates a DELETE query that removes all rows from the db, that fulfill /// a passed condition. /// </summary> /// <param name="deleteCondition">if a row fulfills this condition, the generated query will delete it.</param> /// <returns>a query-<see cref="string"/> and a <see cref="QueryParameter[]"/> that /// contains all parameters used in the WHERE-clause in a sanitized way.</returns> public (string query, QueryParameter[] queryParameters) GenerateDeleteQuery(IQueryCondition deleteCondition) { if (deleteCondition is null) { throw new ArgumentNullException(nameof(deleteCondition)); } var queryStringBuilder = new StringBuilder(); var queryParameters = new List <QueryParameter>(); queryStringBuilder.Append($"DELETE FROM [Hurace].[{typeof(T).Name}] WHERE "); deleteCondition.AppendTo(queryStringBuilder, queryParameters); return(queryStringBuilder.ToString(), queryParameters.ToArray()); }
public void SetTree(IQueryCondition condition) { TableInfo ti = new TableInfo(condition.TableName, condition.ID, condition.ConditionDic); IDataBaseAssiant IDatabase = new DataBaseForThinkment(condition.TableName).IDatabase; Order[] o; if (string.IsNullOrEmpty(condition.Sort)) { o = new Order[] { new Order(condition.PriMaryKeyName, OrderMode.Asc) } } ; else { o = new Order[] { new Order(condition.Sort, (OrderMode)condition.Sord), new Order(condition.PriMaryKeyName, OrderMode.Asc) } }; //处理排序(默认主键) try { List <TableInfo> aList = IDatabase.GetDtByCondition <TableInfo>(ti.TableName, condition.Condition, o, condition.Fields); if (condition.JoinInfo != null) { aList[0].Table = IDatabase.Join(aList[0].Table, condition); //表连接 } if (aList[0].Table != null) { if (!aList[0].Table.Columns.Contains(HASNODE_KEY)) { aList[0].Table.Columns.Add(HASNODE_KEY, typeof(Boolean)); //添加hasnode节点 } foreach (DataRow item in aList[0].Table.Rows) //处理hasnode { Criteria c = new Criteria(CriteriaType.Equals, condition.PIDKeyName, item[condition.PriMaryKeyName]); int childNodeCount = IDatabase.Total(ti.TableName, c); //获取子节点数目 item[HASNODE_KEY] = childNodeCount > 0 ? true : false; } } condition.JsonMessage.Add(Enum_operType.Seach.ToString(), aList[0].ToJson().Replace("{0}", condition.total.ToString()).Replace("{1}", "200").Replace("{2}", "数据成功返回").Replace("{3}", condition.Page.ToString()).Replace("{4}", condition.totalPage.ToString())); //查询结果特殊处理 } catch (Exception ex) { QueryCondition.SetMessage(condition, condition.TableName, true, "查询", ex.Message); We7.Framework.LogHelper.WriteLog(typeof(JsonResult), ex); } } }
/// <summary> /// 提交审核 /// </summary> /// <param name="conn"></param> /// <returns></returns> public static void SubmitAuditCommand(IQueryCondition condition) { MoldPanel mp = new MoldPanel(); PanelContext data = GetPanelContext(condition, mp); We7.Model.UI.Command.SubmitAuditCommand sac = new Model.UI.Command.SubmitAuditCommand(); try { sac.Do(data); QueryCondition.SetMessage(condition, condition.TableName, false, "操作", string.Empty, condition.ID.Split(',').Length); } catch (Exception ex) { QueryCondition.SetMessage(condition, condition.TableName, true, "操作", ex.Message); We7.Framework.LogHelper.WriteLog(typeof(ExpandClass), ex); } }
private static String MakeMessage(IQueryCondition internalQuery, Object[] args) { var sb = new StringBuilder(); sb.AppendLine() .AppendLine("QUERY:") .AppendLine(internalQuery.Compile()) .AppendLine("-------------------------------------------------------------------------"); int i = 0; foreach (var parameter in internalQuery.Parameters) { if (i < args.Length) sb.AppendLine(MakeLine(parameter.Name, args[i++])); else sb.AppendLine(MakeLine(parameter.Name, "none")); } return sb.ToString(); }
public WrongArgumentsException(IQueryCondition internalQuery, Object[] args) : base(MakeMessage(internalQuery, args)) { }
private static TestCaseData MakeTestCase(IQueryCondition query, int paramCount = 0) { return new TestCaseData(query, paramCount); }
public String QueryCompiler_Assert_Result_Employee(IQueryCondition query, int paramCount) { var result = query.Compile(); Assert.That(((IList<IQueryParameter>)query.Parameters).Count, Is.EqualTo(paramCount)); return result; }