C# Linq包括收集中的儿童
使用include方法不包括集合的子级C# Linq包括收集中的儿童,c#,linq,entity-framework,include,linq-to-entities,C#,Linq,Entity Framework,Include,Linq To Entities,使用include方法不包括集合的子级 var abuseCaseQuery = from @event in context.AbuseEvents.Include("AbuseCase.AbuseCaseStatus.Status") select new { @event.SecurityGroupId, @event.AbuseCaseId, @event.AbuseCase.AbuseCaseStatus } ; var abuseC
var abuseCaseQuery =
from @event in
context.AbuseEvents.Include("AbuseCase.AbuseCaseStatus.Status")
select new
{
@event.SecurityGroupId,
@event.AbuseCaseId,
@event.AbuseCase.AbuseCaseStatus
}
;
var abuseCases = abuseCaseQuery.ToList();
abuseCases
列表包含所有AbuseCasesStatus
和StatusId
,但Status
对象为空
edmx:
如何填充
状态
导航属性?在EF中,使用选择
添加投影时,将忽略包含
因此,您必须显式选择所需的所有数据:
select new
{
@event.SecurityGroupId,
@event.AbuseCaseId,
@event.AbuseCase.AbuseCaseStatuses
.Select( acs => new { AbuseCaseStatus = acs, Status = acs.Status } )
}
这确实会产生一个“平面”对象,因此您可能希望在以后修复对象图:
foreach( var abuseCase in abuseCases )
{
foreach( var acs in abuseCase.AbuseCaseStatuses )
{
acs.AbuseCaseStatus.Status = acs.Status;
}
}
我无法选择集合@event.AbuseCase.AbuseCaseStatus.Status。我试图使用select many功能,但遇到问题。
AbuseCaseStatus
表有一个StatusId
列,因此它的Status
导航属性应该是单个Status
对象-不是这样吗?对不起,我不清楚。是的,AbuseCaseStatus
对象有一个Status
,但在我的选择中,@event.AbuseCase.AbuseCaseStatus
是所有AbuseCaseStatus
的集合,用于该AbuseCase
我的错误-我没有仔细查看您的模型。我已经更新了我的答案。