Skip to content

Commit dfa59c8

Browse files
authored
Merge pull request #90 from zoriya/master
Fix eager includes not working
2 parents 4a83905 + 17fc22c commit dfa59c8

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

samples/BasicSample/Program.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,18 @@ public static void Main(string[] args)
200200
Console.WriteLine($"Our users bought the following products starting with 'Red': {string.Join(", ", result.Ordered)}");
201201
}
202202

203+
{
204+
var ret = dbContext.Users
205+
.Include(x => x.Orders)
206+
.ThenInclude(x => x.Items)
207+
.ThenInclude(x => x.Product)
208+
.First();
209+
Console.WriteLine($"User name: {ret.FullName}, Orders: {string.Join(", ", ret.Orders
210+
.SelectMany(x => x.Items
211+
.Select(y => y.Product.Name)
212+
))}");
213+
}
214+
203215
}
204216
}
205217
}

src/EntityFrameworkCore.Projectables/Services/ProjectableExpressionReplacer.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ bool TryGetReflectedExpression(MemberInfo memberInfo, [NotNullWhen(true)] out La
5959
[return: NotNullIfNotNull(nameof(node))]
6060
public Expression? Replace(Expression? node)
6161
{
62+
_disableRootRewrite = false;
6263
var ret = Visit(node);
6364

6465
if (_disableRootRewrite)
@@ -254,6 +255,9 @@ private Expression _AddProjectableSelect(Expression node, IEntityType entityType
254255
var properties = entityType.GetProperties()
255256
.Where(x => !x.IsShadowProperty())
256257
.Select(x => x.GetMemberInfo(false, false))
258+
.Concat(entityType.GetNavigations()
259+
.Where(x => !x.IsShadowProperty())
260+
.Select(x => x.GetMemberInfo(false, false)))
257261
// Remove projectable properties from the ef properties. Since properties returned here for auto
258262
// properties (like `public string Test {get;set;}`) are generated fields, we also need to take them into account.
259263
.Where(x => projectableProperties.All(y => x.Name != y.Name && x.Name != $"<{y.Name}>k__BackingField"));

0 commit comments

Comments
 (0)