Skip to content

Commit 4814b35

Browse files
committed
Undo not working code
1 parent a5edf73 commit 4814b35

File tree

4 files changed

+26
-34
lines changed

4 files changed

+26
-34
lines changed

src/NHibernate/Linq/Visitors/JoinBuilder.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using Remotion.Linq;
55
using Remotion.Linq.Clauses;
66
using Remotion.Linq.Clauses.Expressions;
7+
using Remotion.Linq.Parsing;
78

89
namespace NHibernate.Linq.Visitors
910
{
@@ -75,5 +76,23 @@ private void AddJoin(QueryModel queryModel, NhJoinClause joinClause)
7576
{
7677
queryModel.BodyClauses.Add(joinClause);
7778
}
79+
80+
private class QuerySourceExtractor : RelinqExpressionVisitor
81+
{
82+
private IQuerySource _querySource;
83+
84+
public static IQuerySource GetQuerySource(Expression expression)
85+
{
86+
var sourceExtractor = new QuerySourceExtractor();
87+
sourceExtractor.Visit(expression);
88+
return sourceExtractor._querySource;
89+
}
90+
91+
protected override Expression VisitQuerySourceReference(QuerySourceReferenceExpression expression)
92+
{
93+
_querySource = expression.ReferencedQuerySource;
94+
return base.VisitQuerySourceReference(expression);
95+
}
96+
}
7897
}
7998
}

src/NHibernate/Linq/Visitors/QuerySourceExtractor.cs

Lines changed: 0 additions & 25 deletions
This file was deleted.

src/NHibernate/Linq/Visitors/QuerySourceLocator.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
namespace NHibernate.Linq.Visitors
77
{
88

9-
// Since 5.5
10-
[Obsolete("This class has no more usages and will be removed in a future version")]
119
public class QuerySourceLocator : NhQueryModelVisitorBase
1210
{
1311
readonly System.Type _type;

src/NHibernate/Linq/Visitors/ResultOperatorProcessors/ProcessFetch.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
using NHibernate.Hql.Ast.ANTLR;
55
using NHibernate.Persister.Entity;
66
using NHibernate.Type;
7-
using Remotion.Linq.Clauses.StreamedData;
87
using Remotion.Linq.EagerFetching;
98

109
namespace NHibernate.Linq.Visitors.ResultOperatorProcessors
@@ -13,17 +12,18 @@ public class ProcessFetch
1312
{
1413
public void Process(FetchRequestBase resultOperator, QueryModelVisitor queryModelVisitor, IntermediateHqlTree tree)
1514
{
16-
var selector = ((StreamedSequenceInfo) queryModelVisitor.PreviousEvaluationType).ItemExpression;
17-
var querySource = QuerySourceExtractor.GetQuerySource(selector);
18-
var sourceAlias = queryModelVisitor.VisitorParameters.QuerySourceNamer.GetName(querySource);
19-
Process(resultOperator, queryModelVisitor, tree, GetFromNodeByAlias(tree, sourceAlias), sourceAlias);
15+
var querySource = QuerySourceLocator.FindQuerySource(
16+
queryModelVisitor.Model,
17+
resultOperator.RelationMember.DeclaringType);
18+
var name = queryModelVisitor.VisitorParameters.QuerySourceNamer.GetName(querySource);
19+
Process(resultOperator, queryModelVisitor, tree, GetFromNodeByAlias(tree, name), name);
2020
}
2121

22-
private static HqlTreeNode GetFromNodeByAlias(IntermediateHqlTree tree, string sourceAlias)
22+
private static HqlTreeNode GetFromNodeByAlias(IntermediateHqlTree tree, string alias)
2323
{
2424
return tree.Root.NodesPreOrder
2525
.First(x => x.AstNode.Type == HqlSqlWalker.FROM).Children
26-
.First(x => GetNodeAlias(x) == sourceAlias);
26+
.First(x => GetNodeAlias(x) == alias);
2727
}
2828

2929
private static string GetNodeAlias(HqlTreeNode fromNode)

0 commit comments

Comments
 (0)