public override IQuery <T> JoinOn <TRightEntity>(System.Linq.Expressions.Expression <Func <T, TRightEntity, bool> > joinExpression, JoinType joinType = JoinType.Inner)
        {
            if (joinExpression == null)
            {
                throw new ArgumentNullException("Join expression can't be null.");
            }

            var sqlServerJoin = new SqlServerJoin <T, TRightEntity>(this, new SqlServerSelectQuery <TRightEntity>());

            Joins.Enqueue(sqlServerJoin);

            return(sqlServerJoin.On(joinExpression));
        }