c# - EFCore Linq ThenInclude 两个外键到同一个表

标签 c# asp.net-core linq-to-entities entity-framework-core

有没有人看到我做错了什么?
ProjectActivityTasks 具有 UnitOfMeasureIdProjectActivityTaskTypeId。按照它的编写方式,它认为 UnitOfMeasure 转到 ProjectActivityTaskType。对于 UnitOfMeasure

,它在 ThenInclude 上出错

ProjectActivityTaskType does not contain a definition for UnitOfMeasure

这是正确的。 UnitOfMeasure 转到 ProjectActivityTasks

我引用了这个页面,但它似乎不是这样工作的: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();

最佳答案

您可以(并且应该)重复 Include(x => x.ProjectActivityTasks) 部分:

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();

关于c# - EFCore Linq ThenInclude 两个外键到同一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46506692/

相关文章:

c# - EventLog WriteEntry not 不写入 C# 中的 EventViewer

c# - 如何使用 Linq 查询 Azure 存储表?

c# - 从.NET Core 2.1降级到.NET 4.7.1时如何使用IApplicationBuilder和IServiceCollection?

.net - Linq To 实体查询异常

asp.net - Entity Framework 按枚举值字母顺序排序

c# - LINQ to Entities 中使用的 AddDays 在除一台服务器外的所有服务器中抛出错误

c# - 衡量函数执行时间的最佳方法是什么?

c# - 在遗留 .NET 平台上使用 .NET Core 包

c# - 如何在新创建的 .NET Core 2.0 Web 应用程序中以 .NET Standard 2.0 为目标?

entity-framework-4 - Entity Framework 4/Linq : How to convert from DateTime to string in a query?