Skip to content

Commit d3d29e5

Browse files
update based on review comments
1 parent 2b76d01 commit d3d29e5

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

src/Microsoft.AspNetCore.OData/Query/Expressions/SelectExpandBinder.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using System.Collections.Generic;
1010
using System.Diagnostics.CodeAnalysis;
1111
using System.Diagnostics.Contracts;
12+
using System.Diagnostics.Tracing;
1213
using System.Linq;
1314
using System.Linq.Expressions;
1415
using System.Reflection;
@@ -377,14 +378,20 @@ internal Expression ProjectElement(QueryBinderContext context, Expression source
377378
// If we have an EF query provider, then we remove the non-structural properties. The reason for this is to avoid
378379
// Creating an expression that will generate duplicate LEFT joins when a LEFT join already exists in the IQueryable
379380
// as observed here: https://github.com/OData/AspNetCoreOData/issues/497
381+
382+
Expression updatedExpression = null;
380383
if (IsEfQueryProvider())
381-
{
382-
source = SelectExpandBinder.RemoveNonStructucalProperties(source, structuredType);
384+
{
385+
updatedExpression = SelectExpandBinder.RemoveNonStructucalProperties(source, structuredType);
386+
}
387+
else
388+
{
389+
updatedExpression = source;
383390
}
384391

385392
// Initialize property 'Instance' on the wrapper class
386393
wrapperProperty = wrapperType.GetProperty("Instance");
387-
wrapperTypeMemberAssignments.Add(Expression.Bind(wrapperProperty, source));
394+
wrapperTypeMemberAssignments.Add(Expression.Bind(wrapperProperty, updatedExpression));
388395

389396
wrapperProperty = wrapperType.GetProperty("UseInstanceForProperties");
390397
wrapperTypeMemberAssignments.Add(Expression.Bind(wrapperProperty, Expression.Constant(true)));

test/Microsoft.AspNetCore.OData.Tests/Query/Expressions/SelectExpandBinderTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ public void Bind_GeneratedExpression_ContainsExpandedObject()
214214
[InlineData(HandleNullPropagationOptionHelper.ObjectContextQueryProviderNamespaceEFCore2)]
215215
[InlineData(HandleNullPropagationOptionHelper.ObjectContextQueryProviderNamespaceEF5)]
216216
[InlineData(HandleNullPropagationOptionHelper.ObjectContextQueryProviderNamespaceEF6)]
217-
public void Bind_UsingEFQueryProvider_GeneratedExpression_ContainsExpandedObject(string queryProvider)
217+
public void Bind_UsingEFQueryProvider_GeneratedExpression__DoesNot_ContainExpandedObject(string queryProvider)
218218
{
219219
// Arrange
220220
SelectExpandQueryOption selectExpand = new SelectExpandQueryOption("Orders", "Orders,Orders($expand=Customer)", _context);

0 commit comments

Comments
 (0)