我有这个查询:
var orders1 = (from header in _context.SalesOrder.Include(nameof(SalesOrder.SalesOrderItem))
.Include(nameof(SalesOrder.Erp))
.Include(nameof(SalesOrder.OrderStatus))
join orgNumber in _context.OrganizationNumber on header.CustomerNumber equals orgNumber.Number
join userOrg in _context.UserOrganization on orgNumber.OrganizationId equals userOrg.OrganizationId
where userOrg.UserId == userId && !header.Deleted && !orgNumber.Deleted && !userOrg.Deleted
&& (header.OrderNumber == sopoNumber || header.CustomerPoNumber == sopoNumber)
select GetSalesOrderModel(header)).AsNoTracking().ToList();
主表SalesOrder
与SalesOrderItem
有一对多关系。和SalesOrderItem
一样,SalesOrder
的OrderStatus表也有FK。但是我不确定如何将Include
添加到已经包含的SalesOrderItem
列表中。是否可以直接在查询中添加它?我可以在填充模型对象之后执行此操作,但是想看看是否可以一次完成所有操作。
答案 0 :(得分:1)
对每个子导航属性使用ThenInclude()。 参考:Loading Related Data - Including Multiple Levels
答案 1 :(得分:1)
所以这是与答案完全无关的另一件事,但是即使如此,我还是在这里将其发布给所有在包含和包含中苦苦挣扎的人
在EFCore include(x => x.Object)中。ThenInclude(y => y.Subobject)也可以很好地工作,但是vs智商可以做到这一点
因此,可以使用.Include(x => x.SalesOrderItem)
,而不是使用.Include(nameof(SalesOrder.SalesOrderItem))。回到您的问题
这是下面的示例代码
vmExecutionRepo.FilteredGet().Include(x => x.ProjectToProcess).Include(z => z.ProjectToProcess.Process)
.Include(y => y.ProjectToProcess.Project)
.Include(a => a.ProjectToProcess.Project.BotToWorkQueue).ThenInclude(v => v.BotToWorkQueueItem)
您还可以尝试类似的方法