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));
		}
Beispiel #3
0
		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)
				}
			}
		}