diff --git a/src/NHibernate/Linq/Clauses/NhJoinClause.cs b/src/NHibernate/Linq/Clauses/NhJoinClause.cs index 3a1c17147aa..d68926f88b3 100644 --- a/src/NHibernate/Linq/Clauses/NhJoinClause.cs +++ b/src/NHibernate/Linq/Clauses/NhJoinClause.cs @@ -54,8 +54,6 @@ public NhJoinClause(string itemName, System.Type itemType, Expression fromExpres public bool IsInner { get; private set; } - internal JoinClause ParentJoinClause { get; set; } - public void TransformExpressions(Func transformation) { if (transformation == null) throw new ArgumentNullException(nameof(transformation)); diff --git a/src/NHibernate/Linq/Visitors/QueryModelVisitor.cs b/src/NHibernate/Linq/Visitors/QueryModelVisitor.cs index 8f8e00c4d3c..3c95d90c9ab 100644 --- a/src/NHibernate/Linq/Visitors/QueryModelVisitor.cs +++ b/src/NHibernate/Linq/Visitors/QueryModelVisitor.cs @@ -576,27 +576,10 @@ private void AddJoin(JoinClause joinClause, QueryModel queryModel, bool innerJoi var withClause = equalityVisitor.Visit(joinClause.InnerKeySelector, joinClause.OuterKeySelector); var alias = _hqlTree.TreeBuilder.Alias(VisitorParameters.QuerySourceNamer.GetName(joinClause)); var joinExpression = HqlGeneratorExpressionVisitor.Visit(joinClause.InnerSequence, VisitorParameters); - HqlTreeNode join; - // When associations are located inside the inner key selector we have to use a cross join instead of an inner - // join and add the condition in the where statement. - if (queryModel.BodyClauses.OfType().Any(o => o.ParentJoinClause == joinClause)) - { - if (!innerJoin) - { - throw new NotSupportedException("Left joins that have association properties in the inner key selector are not supported."); - } - - _hqlTree.AddWhereClause(withClause); - join = CreateCrossJoin(joinExpression, alias); - } - else - { - join = innerJoin - ? _hqlTree.TreeBuilder.InnerJoin(joinExpression.AsExpression(), alias) - : (HqlTreeNode) _hqlTree.TreeBuilder.LeftJoin(joinExpression.AsExpression(), alias); - join.AddChild(_hqlTree.TreeBuilder.With(withClause)); - } - + var join = innerJoin + ? _hqlTree.TreeBuilder.InnerJoin(joinExpression.AsExpression(), alias) + : (HqlTreeNode) _hqlTree.TreeBuilder.LeftJoin(joinExpression.AsExpression(), alias); + join.AddChild(_hqlTree.TreeBuilder.With(withClause)); _hqlTree.AddFromClause(join); }