Exemple #1
0
        /// <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);
        }
Exemple #2
0
        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);
        }
Exemple #4
0
 /// <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);
         }
     }
 }
Exemple #5
0
        /// <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);
            }
        }
Exemple #6
0
        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
        }
Exemple #7
0
 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);
        }
Exemple #12
0
/*
 *      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);
                    }
                }
            }
        }
Exemple #13
0
        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);
        }
Exemple #14
0
        /// <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);
            }
        }
Exemple #15
0
 public GetModelCount()
 {
     if (!string.IsNullOrEmpty(We7.CMS.Accounts.Security.CurrentAccountID)) //判断是否登录
     {
         condiction = new QueryCondition(HttpContext.Current.Request.Form); //初始化查询对象
         condiction.OnToJsonEvent += ExpandClass.GetModelCount;
     }
 }
Exemple #16
0
 public JsonForCondition()
 {
     if (!string.IsNullOrEmpty(We7.CMS.Accounts.Security.CurrentAccountID)) //判断是否登录
     {
         condiction = new QueryCondition(HttpContext.Current.Request.Form); //初始化查询对象
         condiction.ResponseJsonEvent += JsonResult.ToJson;
     }
 }
Exemple #17
0
 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());
        }
Exemple #20
0
        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));
        }
Exemple #21
0
        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));
        }
Exemple #22
0
 /// <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));
        }
Exemple #24
0
        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);
 }
Exemple #26
0
        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);
        }
Exemple #27
0
 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());
        }
Exemple #29
0
        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);
            }
        }
    }
Exemple #30
0
        /// <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))
 {
 }
Exemple #33
0
 private static TestCaseData MakeTestCase(IQueryCondition query, int paramCount = 0)
 {
     return new TestCaseData(query, paramCount);
 }
Exemple #34
0
 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;
 }