I have this query
var test = context.Assignments
.Include(a => a.Customer)
.Include(a => a.Subscriptions)
.Select(a => n
This is by design. Include
is not for scenarios with projection or custom joins.
Add the customer to your projection:
var test = context.Assignments
.Select(a => new AssignmentWithSubscriptionCount
{
SubscriptionCount = a.Subscriptions.Count(),
Assignment = a,
Customer = a.Customer
});
var name = test.First().Customer.Name;
The EF context will probably ensure that Assignment.Customer
gets populated automatically.
Edit
If you don't want or can't change the AssignmentWithSubscriptionCount
class you can also project into an anonymous type and then copy the result in memory into this class:
var test = context.Assignments
.Select(a => new
{
SubscriptionCount = a.Subscriptions.Count(),
Assignment = a,
Customer = a.Customer
});
test.ToList() // executes query
.Select(o =>
{
o.Assignment.Customer = o.Customer;
return new AssignmentWithSubscriptionCount
{
SubscriptionCount = o.SubscriptionCount,
Assignment = o.Assignment
}
});
Another option is explicite loading (requires one additional roundtrip per loaded Assignment
though).