private static void BuildJoinCondition(SqlQuery query, SqlQueryJoin join, QueryConditionDef condition, DocDef docDef, SqlQueryCondition parentCondition, IDataContext dataContext) { if (condition.Condition != ConditionOperation.Include && condition.Condition != ConditionOperation.Exp) { var leftPart = BuildConditionPart(query, condition.Left, dataContext); var rightPart = BuildConditionPart(query, condition.Right, dataContext); join.Conditions.Add(new SqlQueryCondition(condition.Operation, leftPart, condition.Condition, rightPart)); } else if (condition.Condition == ConditionOperation.Include && condition.Conditions != null && condition.Conditions.Count > 0) { var attrDef = String.IsNullOrEmpty(condition.AttributeName) ? docDef.Attributes.First(a => a.Id == condition.AttributeId) : docDef.Attributes.First( a => String.Equals(a.Name, condition.AttributeName, StringComparison.OrdinalIgnoreCase)); query.JoinSource(query.FindSourceByDocDef(docDef), attrDef.DocDefType.Id, SqlSourceJoinType.Inner, attrDef.Id); foreach (var child in condition.Conditions) { BuildJoinCondition(query, join, child, attrDef.DocDefType.Id, parentCondition, dataContext); } } else if (condition.Condition == ConditionOperation.Exp && condition.Conditions != null) { var exp = new SqlQueryCondition(null, condition.Operation, Guid.Empty, ConditionOperation.Exp, null); foreach (var child in condition.Conditions) { BuildJoinCondition(query, join, child, docDef, exp, dataContext); } } }
private static void BuildJoinCondition(SqlQuery query, SqlQueryJoin join, QueryConditionDef condition, Guid docDefId, SqlQueryCondition parentCondition, IDataContext dataContext) { // using (var defRepo = new DocDefRepository(dataContext)) var defRepo = query.Provider.Get <IDocDefRepository>(); { var docDef = defRepo.DocDefById(docDefId); BuildJoinCondition(query, join, condition, docDef, parentCondition, dataContext); } }
private static void BuildCondition(SqlQuery query, QueryConditionDef condition, DocDef docDef, SqlQueryCondition parentCondition) { if (condition.Condition != ConditionOperation.Include && condition.Condition != ConditionOperation.Exp) { if (condition.SubQueryDef != null) { var subQuery = Build(query.DataContext, condition.SubQueryDef); if (String.IsNullOrEmpty(condition.AttributeName)) { query.AddCondition(condition.Operation, docDef, condition.AttributeId, condition.Condition, subQuery, condition.SubQueryAttribute, parentCondition); } else { query.AddCondition(condition.Operation, docDef, condition.AttributeName, condition.Condition, subQuery, condition.SubQueryAttribute, parentCondition); } } else if (String.IsNullOrEmpty(condition.AttributeName)) { query.AddCondition(condition.Operation, docDef, condition.AttributeId, condition.Condition, condition.Values, parentCondition); } else { query.AddCondition(condition.Operation, docDef, condition.AttributeName, condition.Condition, condition.Values, parentCondition); } } else if (condition.Condition == ConditionOperation.Include && condition.Conditions != null && condition.Conditions.Count > 0) { var attrDef = String.IsNullOrEmpty(condition.AttributeName) ? docDef.Attributes.First(a => a.Id == condition.AttributeId) : docDef.Attributes.First( a => String.Equals(a.Name, condition.AttributeName, StringComparison.OrdinalIgnoreCase)); query.JoinSource(query.FindSourceByDocDef(docDef), attrDef.DocDefType.Id, SqlSourceJoinType.Inner, attrDef.Id); foreach (var child in condition.Conditions) { BuildCondition(query, child, attrDef.DocDefType.Id, parentCondition); } } else if (condition.Condition == ConditionOperation.Exp && condition.Conditions != null) { var exp = query.AddExpCondition(condition.Operation, parentCondition); foreach (var child in condition.Conditions) { BuildCondition(query, child, docDef, exp); } } }
public IQueryCondition AddExpCondition(ExpressionOperation operation, string attribute) { var exp = new QueryConditionDef { Operation = operation, Condition = ConditionOperation.Exp }; AddCondition(exp); var condition = CreateConditionDef(attribute, ExpressionOperation.And, ""); // new QueryConditionDef { AttributeName = attribute, Operation = ExpressionOperation.And }; exp.Conditions.Add(condition); var expBuilder = new ExpressionBuilder(this, exp); return(new QueryConditionBuilder(expBuilder, condition)); }
public IQueryCondition On(string source, string attrName) { var sourceDef = Parent.GetSource(source); var condition = new QueryConditionDef { Operation = ExpressionOperation.And, Left = new QueryConditionPartDef { Attribute = new QuerySingleAttributeDef { Alias = attrName, Attribute = new QueryAttributeRef { Source = sourceDef, AttributeName = attrName } } } }; AddCondition(condition); return(new QueryConditionBuilder(this, condition)); }
internal override void AddCondition(QueryConditionDef condition) { Condition.Conditions.Add(condition); }
public ConditionExpressionBuilder(BaseQueryBuilder parent, QueryConditionDef condition) : base(parent) { Condition = condition; }
public QueryCondition(QueryConditionDef condition, DocDef docDef) { Condition = condition; DocDef = docDef; }
internal override void AddCondition(QueryConditionDef condition) { Def.WhereConditions.Add(condition); }
internal virtual void AddCondition(QueryConditionDef condition) { throw new NotImplementedException(); }