Skip to content

Commit 794dbfe

Browse files
committed
fixup! Add support for querying dynamic objects with Linq
1 parent 5f1bf8d commit 794dbfe

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

src/NHibernate/Linq/Visitors/HqlGeneratorExpressionVisitor.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ protected HqlTreeNode VisitExpression(Expression expression)
106106
return VisitParameterExpression((ParameterExpression) expression);
107107
case ExpressionType.TypeIs:
108108
return VisitTypeBinaryExpression((TypeBinaryExpression) expression);
109+
case ExpressionType.Dynamic:
110+
return VisitDynamicExpression((DynamicExpression) expression);
109111

110112
case ExpressionType.Extension:
111113
switch (expression)
@@ -143,6 +145,19 @@ protected HqlTreeNode VisitExpression(Expression expression)
143145
}
144146
}
145147

148+
private HqlTreeNode VisitDynamicExpression(DynamicExpression expression)
149+
{
150+
switch (expression.Binder)
151+
{
152+
case GetMemberBinder binder:
153+
return _hqlTreeBuilder.Dot(
154+
VisitExpression(expression.Arguments[1]).AsExpression(),
155+
_hqlTreeBuilder.Ident(binder.Name));
156+
}
157+
158+
throw new NotSupportedException($"Dynamic expression with a binder of {expression.Binder.GetType()} is not supported");
159+
}
160+
146161
private HqlTreeNode VisitTypeBinaryExpression(TypeBinaryExpression expression)
147162
{
148163
return BuildOfType(expression.Expression, expression.TypeOperand);

0 commit comments

Comments
 (0)