@@ -114,6 +114,7 @@ public static ExpressionToHqlTranslationResults GenerateHqlQuery(QueryModel quer
114
114
private readonly NhLinqExpressionReturnType ? _rootReturnType ;
115
115
private static readonly ResultOperatorMap ResultOperatorMap ;
116
116
private bool _serverSide = true ;
117
+ private readonly bool _root ;
117
118
118
119
public VisitorParameters VisitorParameters { get ; }
119
120
@@ -161,6 +162,7 @@ private QueryModelVisitor(VisitorParameters visitorParameters, bool root, QueryM
161
162
_queryMode = root ? visitorParameters . RootQueryMode : QueryMode . Select ;
162
163
VisitorParameters = visitorParameters ;
163
164
Model = queryModel ;
165
+ _root = root ;
164
166
_rootReturnType = root ? rootReturnType : null ;
165
167
_hqlTree = new IntermediateHqlTree ( root , _queryMode ) ;
166
168
}
@@ -467,19 +469,27 @@ public override void VisitSelectClause(SelectClause selectClause, QueryModel que
467
469
}
468
470
469
471
//This is a standard select query
472
+ _hqlTree . AddSelectClause ( GetSelectClause ( selectClause . Selector ) ) ;
473
+
474
+ base . VisitSelectClause ( selectClause , queryModel ) ;
475
+ }
476
+
477
+ private HqlSelect GetSelectClause ( Expression selectClause )
478
+ {
479
+ if ( ! _root )
480
+ return _hqlTree . TreeBuilder . Select (
481
+ HqlGeneratorExpressionVisitor . Visit ( selectClause , VisitorParameters ) . AsExpression ( ) ) ;
470
482
471
483
var visitor = new SelectClauseVisitor ( typeof ( object [ ] ) , VisitorParameters ) ;
472
484
473
- visitor . VisitSelector ( selectClause . Selector ) ;
485
+ visitor . VisitSelector ( selectClause ) ;
474
486
475
487
if ( visitor . ProjectionExpression != null )
476
488
{
477
489
_hqlTree . AddItemTransformer ( visitor . ProjectionExpression ) ;
478
490
}
479
491
480
- _hqlTree . AddSelectClause ( _hqlTree . TreeBuilder . Select ( visitor . GetHqlNodes ( ) ) ) ;
481
-
482
- base . VisitSelectClause ( selectClause , queryModel ) ;
492
+ return _hqlTree . TreeBuilder . Select ( visitor . GetHqlNodes ( ) ) ;
483
493
}
484
494
485
495
private void VisitInsertClause ( Expression expression )
@@ -527,6 +537,9 @@ private void VisitUpdateClause(Expression expression)
527
537
528
538
private void VisitDeleteClause ( Expression expression )
529
539
{
540
+ if ( ! _root )
541
+ return ;
542
+
530
543
// We only need to check there is no unexpected select, for avoiding silently ignoring them.
531
544
var visitor = new SelectClauseVisitor ( typeof ( object [ ] ) , VisitorParameters ) ;
532
545
visitor . VisitSelector ( expression ) ;
0 commit comments