3

使用 include 方法不包括集合的子项。

var abuseCaseQuery =
  from @event in 
    context.AbuseEvents.Include("AbuseCase.AbuseCaseStatus.Status")
  select new
  {
    @event.SecurityGroupId,
    @event.AbuseCaseId,
    @event.AbuseCase.AbuseCaseStatus
  }
;

var abuseCases = abuseCaseQuery.ToList();

abuseCasesList 包含所有AbuseCasesStatus和 ,但StatusId对象Status为空。

edmx:

edmx

如何填充Status导航属性?

4

1 回答 1

1

在 EF 中,Includes当您使用 . 添加投影时将被忽略Select

因此,您必须明确选择所需的所有数据:

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;
  }
}
于 2013-04-02T11:04:48.253 回答