public QueryJoinDef AddJoin(QuerySourceDef source, SqlSourceJoinType joinType) { Def.Sources.Add(source); if (!String.IsNullOrWhiteSpace(source.Alias)) { _sourceAliases.Add(source.Alias, source); } else { _sourceAliasNo++; while (_sourceAliases.ContainsKey("source" + _sourceAliasNo)) { _sourceAliasNo++; } source.Alias = "source" + _sourceAliasNo; _sourceAliases.Add(source.Alias, source); } var join = new QueryJoinDef { Source = source, Operation = joinType }; Def.Joins.Add(join); return(join); }
private static void BuildJoin(SqlQuery query, QueryJoinDef join, DocDef docDef, IDataContext dataContext) { var source = query.Sources.First( s => String.Equals(s.AliasName, join.Source.Alias, StringComparison.OrdinalIgnoreCase)); var queryJoin = new SqlQueryJoin(source, join.Operation); foreach (var condition in join.Conditions) { BuildJoinCondition(query, queryJoin, condition, docDef, null, dataContext); } query.SourceJoins.Add(queryJoin); }
public IQuery Join(QueryDef query, string alias, Action <IQueryExpression> conditionAction) { var source = new QuerySourceDef { SubQuery = query, Alias = alias }; var joinDef = new QueryJoinDef { Operation = SqlSourceJoinType.Inner, Source = source }; Def.Sources.Add(source); var expBuilder = new QueryJoinBuilder(this, joinDef); Def.Joins.Add(joinDef); conditionAction.Invoke(expBuilder); return(this); }
public IQuery FullJoin(string docDefName, string alias, Action <IQueryExpression> conditionAction) { var source = new QuerySourceDef { DocDefName = docDefName, Alias = alias }; Def.Sources.Add(source); var joinDef = new QueryJoinDef { Operation = SqlSourceJoinType.FullOuter, Source = source }; var expBuilder = new QueryJoinBuilder(this, joinDef); Def.Joins.Add(joinDef); conditionAction.Invoke(expBuilder); return(this); }
public IQuery Join(Guid docDefId, string alias, Action <IQueryExpression> conditionAction) { var source = new QuerySourceDef { DocDefId = docDefId, Alias = alias }; var joinDef = new QueryJoinDef { Operation = SqlSourceJoinType.Inner, Source = source/*, * Conditions = expBuilder.Conditions*/ }; Def.Sources.Add(source); var expBuilder = new QueryJoinBuilder(this, joinDef); Def.Joins.Add(joinDef); conditionAction.Invoke(expBuilder); return(this); }
public QueryJoinBuilder(BaseQueryBuilder parent, QueryJoinDef join) : base(parent) { Def = join; }