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)); }