Skip to content

Commit 295585e

Browse files
committed
Code review changes
1 parent 1602029 commit 295585e

File tree

3 files changed

+7
-1
lines changed

3 files changed

+7
-1
lines changed

src/NHibernate/Linq/NhRelinqQueryParser.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ public static PreTransformationResult PreTransform(Expression expression, PreTra
7373
{
7474
parameters.EvaluatableExpressionFilter = new NhEvaluatableExpressionFilter(parameters.SessionFactory);
7575
parameters.QueryVariables = new Dictionary<ConstantExpression, QueryVariable>();
76+
parameters.MinimizeParameters = parameters.QueryMode == QueryMode.Select;
7677

7778
var partiallyEvaluatedExpression = NhPartialEvaluatingExpressionVisitor
7879
.EvaluateIndependentSubtrees(expression, parameters);

src/NHibernate/Linq/Visitors/NhPartialEvaluatingExpressionVisitor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public override Expression Visit(Expression expression)
109109
// Variables in expressions are never a constant, they are encapsulated as fields of a compiler generated class.
110110
// Skip detecting variables for DML queries as HQL does not support reusing parameters for them.
111111
if (expression.NodeType != ExpressionType.Constant &&
112-
_preTransformationParameters.QueryMode == QueryMode.Select &&
112+
_preTransformationParameters.MinimizeParameters &&
113113
evaluatedExpression is ConstantExpression variableConstant &&
114114
!_preTransformationParameters.QueryVariables.ContainsKey(variableConstant) &&
115115
ExpressionsHelper.IsVariable(expression, out var path, out var closureContext))

src/NHibernate/Linq/Visitors/PreTransformationParameters.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ public PreTransformationParameters(QueryMode queryMode, ISessionFactoryImplement
3131
/// </summary>
3232
public ISessionFactoryImplementor SessionFactory { get; }
3333

34+
/// <summary>
35+
/// Whether to minimize the number of parameters for variables.
36+
/// </summary>
37+
internal bool MinimizeParameters { get; set; }
38+
3439
/// <summary>
3540
/// The filter which decides whether a part of the expression will be pre-evalauted or not.
3641
/// </summary>

0 commit comments

Comments
 (0)