I have this query
var test = context.Assignments
.Include(a => a.Customer)
.Include(a => a.Subscriptions)
.Select(a => new AssignmentWithSubscriptionCount { SubscriptionCount = a.Subscriptions.Count(), Assignment = a })
.ToList();
var name = test.First().Assignment.Customer.Name;
It failes to eagerly load Customer, I’ve seen similar problems here on stackoverflow and it looks like you cant use projections with include. But I have not found a solution to my problem.. Anyone?
edit: Here is a eager load with projection that work, its more complex than the example above so I cant for my life understand whats wrong, thanks.
var test = context.PublicationStateGroups
.Include(p => p.PublicationStates.Select(ps => ps.AllowedPublicationStateActions.Select(aps => aps.PublicationStateAction)))
.Select(psg => new StateAndGroupInfo
{
ShowReport = psg.PublicationStates.Any(p => p.PublicationStateReportTypeId.HasValue),
Actions = psg.PublicationStates.SelectMany(state => state.AllowedPublicationStateActions)
.Select(a => a.PublicationStateAction)
.Distinct()
}).ToList();
var eagerTest = test.First().Actions.First().Name;
Add the customer to your projection:
The EF context will probably ensure that
Assignment.Customergets populated automatically.Edit
If you don’t want or can’t change the
AssignmentWithSubscriptionCountclass you can also project into an anonymous type and then copy the result in memory into this class:Another option is explicite loading (requires one additional roundtrip per loaded
Assignmentthough).