示例#1
0
 private static IEnumerable <QueryConditionValueDef> GetConditionPartParams(SqlQueryConditionPart part)
 {
     if (part.Params != null)
     {
         foreach (var param in part.Params.Where(param => !String.IsNullOrEmpty(param.Name)))
         {
             yield return(param);
         }
     }
     if (part.SubQuery != null)
     {
         foreach (var param in part.SubQuery.GetAllParams())
         {
             yield return(param);
         }
     }
 }
示例#2
0
        private static SqlQueryConditionPart BuildConditionPart(SqlQuery query, QueryConditionPartDef part, IDataContext dataContext)
        {
            if (query == null)
            {
                throw new ArgumentNullException("query");
            }
            if (part == null)
            {
                throw new ArgumentNullException("part");
            }

            var single = part.Attribute as QuerySingleAttributeDef;

            if (single != null)
            {
                var source = query.FindSource(single.Attribute.Source);

                var attr = single.Attribute.AttributeId != Guid.Empty
                    ? source.GetAttribute(single.Attribute.AttributeId)
                    : source.GetAttribute(single.Attribute.AttributeName);
                var attrRef = new SqlQuerySourceAttributeRef(source, attr);
                var sqPart  = new SqlQueryConditionPart();
                sqPart.Attributes.Add(attrRef);

                return(sqPart);
            }
            var exp = part.Attribute as QueryExpAttributeDef;

            if (exp != null)
            {
                var sqPart = new SqlQueryConditionPart {
                    Expression = exp.Expression
                };

                foreach (var attribute in exp.Attributes)
                {
                    var source = query.FindSource(attribute.Source);

                    var attr = attribute.AttributeId != Guid.Empty
                        ? source.GetAttribute(attribute.AttributeId)
                        : source.GetAttribute(attribute.AttributeName);
                    var attrRef = new SqlQuerySourceAttributeRef(source, attr);
                    sqPart.Attributes.Add(attrRef);
                }
                return(sqPart);
            }
            var sub = part.Attribute as QuerySubAttributeDef;

            if (sub != null && sub.SubQuery != null)
            {
                var sqlSub = Build(dataContext, sub.SubQuery.QueryDef);

                var sqPart = new SqlQueryConditionPart
                {
                    SubQuery          = sqlSub,
                    SubQueryAttribute = BuildAttribute(sqlSub, sub.SubQueryAttribute)
                };

                return(sqPart);
            }
            if (part.SubQuery != null)
            {
                var sqlSub = Build(dataContext, part.SubQuery.QueryDef);

                var sqPart = new SqlQueryConditionPart
                {
                    SubQuery          = sqlSub,
                    SubQueryAttribute = BuildAttribute(sqlSub, part.Attribute)
                };

                return(sqPart);
            }

            return(new SqlQueryConditionPart {
                Params = part.Params
            });
        }
示例#3
0
 private static IEnumerable <QueryConditionValueDef> FindConditionPartParams(string paramName, SqlQueryConditionPart part)
 {
     if (part.Params != null)
     {
         foreach (var param in part.Params.Where(
                      param =>
                      param.Name != null &&
                      String.Equals(param.Name, paramName, StringComparison.InvariantCultureIgnoreCase)))
         {
             yield return(param);
         }
     }
     if (part.SubQuery != null)
     {
         foreach (var param in part.SubQuery.FindParams(paramName))
         {
             yield return(param);
         }
     }
 }