public void AddManyToManyJoin(JoinFragment outerjoin, IQueryableCollection collection) { string manyToManyFilter = collection.GetManyToManyFilterFragment(rhsAlias, enabledFilters); SqlString condition = string.Empty.Equals(manyToManyFilter) ? on : StringHelper.IsEmpty(on) ? new SqlString(manyToManyFilter) : on.Append(" and ").Append(manyToManyFilter); outerjoin.AddJoin(joinable.TableName, rhsAlias, lhsColumns, rhsColumns, joinType, condition); outerjoin.AddJoins(joinable.FromJoinFragment(rhsAlias, false, true), joinable.WhereJoinFragment(rhsAlias, false, true)); }
public void AddJoins(JoinFragment outerjoin) { outerjoin.AddJoin(joinable.TableName, rhsAlias, lhsColumns, rhsColumns, joinType, on); outerjoin.AddJoins(joinable.FromJoinFragment(rhsAlias, false, true), joinable.WhereJoinFragment(rhsAlias, false, true)); }
private void AddExtraJoins(JoinFragment joinFragment, string alias, IJoinable joinable, bool innerJoin) { bool include = IsIncluded(alias); joinFragment.AddJoins(joinable.FromJoinFragment(alias, innerJoin, include), joinable.WhereJoinFragment(alias, innerJoin, include)); }
public void AddManyToManyJoin(JoinFragment outerjoin, IQueryableCollection collection) { string manyToManyFilter = collection.GetManyToManyFilterFragment(rhsAlias, enabledFilters); string condition = string.Empty.Equals(manyToManyFilter) ? on : string.Empty.Equals(on) ? manyToManyFilter : on + " and " + manyToManyFilter; outerjoin.AddJoin(joinable.TableName, rhsAlias, lhsColumns, rhsColumns, joinType, condition); outerjoin.AddJoins(joinable.FromJoinFragment(rhsAlias, false, true), joinable.WhereJoinFragment(rhsAlias, false, true)); }
private void MergeJoins( JoinFragment ojf ) { foreach( DictionaryEntry de in joins ) { string name = (string)de.Key; JoinFragment join = (JoinFragment) de.Value; if ( typeMap.Contains( name ) ) { IQueryable p = GetPersisterForName( name ); bool includeSubclasses = returnedTypes.Contains( name ) && !IsShallowQuery; bool isCrossJoin = crossJoins.Contains( name ); ojf.AddFragment( join ); ojf.AddJoins( p.FromJoinFragment( name, isCrossJoin, includeSubclasses ), p.QueryWhereFragment( name, isCrossJoin, includeSubclasses ) ); } else if ( collections.Contains( name ) ) { ojf.AddFragment(join); } else { //name from a super query (a bit inelegant that it shows up here) } } }