Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

EFCore Linq ThenInclude Two Foreign Keys To Same Table

Does anyone see what I am doing wrong?
ProjectActivityTasks has the UnitOfMeasureId and the ProjectActivityTaskTypeId. With the way it is written, it thinks that UnitOfMeasure goes to ProjectActivityTaskType. It is erroring out on the ThenInclude for UnitOfMeasure saying

ProjectActivityTaskType does not contain a definition for UnitOfMeasure

which is correct. UnitOfMeasure goes to ProjectActivityTasks.

I was referencing this page but it does not seem to work this way: https://learn.microsoft.com/en-us/ef/core/querying/related-data

var qry = await _projectActivityRepository.GetAll()
.Include(x => x.ProjectActivityVehicles)
  .ThenInclude(x => x.Vehicle)
.Include(x => x.ProjectActivityTasks)
  .ThenInclude(x => x.ProjectActivityTaskType)
  .ThenInclude(x => x.UnitOfMeasure)
.Where(x => x.Id == Id && x.TenantId == (int)AbpSession.TenantId)
.FirstOrDefaultAsync();
like image 414
Ben Avatar asked Jan 04 '23 09:01

Ben


1 Answers

You can (and should) repeat the Include(x => x.ProjectActivityTasks) part:

var qry = await _projectActivityRepository.GetAll()
.Include(x => x.ProjectActivityVehicles)
  .ThenInclude(x => x.Vehicle)
.Include(x => x.ProjectActivityTasks)
  .ThenInclude(x => x.ProjectActivityTaskType)
.Include(x => x.ProjectActivityTasks)
  .ThenInclude(x => x.UnitOfMeasure)
.Where(x => x.Id == Id && x.TenantId == (int)AbpSession.TenantId)
.FirstOrDefaultAsync();
like image 174
Gert Arnold Avatar answered Jan 20 '23 01:01

Gert Arnold