У меня есть наблюдение за отдельными видами и группа наблюдений, где существует связь «многие ко многим» (IndividualObservationGroup). Теперь я получаю сообщение об ошибке в следующем коде, так как я перешел с efcore2.1 на efcore5.0. Я получаю сообщение об ошибке:
System.InvalidOperationException: выражение LINQ 'GroupByShaperExpression: KeySelector: i.ObservationGroupGuid, ElementSelector: EntityShaperExpression: EntityType: IndividualObservationGroup ValueBufferExpression: ProjectionBindingExpression: EmptyProjectionMember IsNullable: False
.Count(x => x.IndividualObservation.SexCodeId == (Nullable<int>)1)' could not be translated. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to 'AsEnumerable', 'AsAsyncEnumerable', 'ToList', or 'ToListAsync'. See https://go.microsoft.com/fwlink/?linkid=2101038 for more information.
Вот код:
var queryable = context.IndividualObservationGroup.AsNoTracking()
.Include(obg => obg.ObservationGroup)
.Include(obg => obg.IndividualObservation)
.ThenInclude(io => io.SetDetail)
.Where(items => String.Equals(items.ObservationGroupGuid, lookupItem.ObservationGroupGuid) &&
items.GroupNumber == lookupItem.GroupNumber &&
items.TargetItem == lookupItem.TargetItem)
.GroupBy(items => items.ObservationGroupGuid)
.Select(items => new
{
TallyKey = items.Key,
Females = items.Count(x => x.IndividualObservation.SexCodeId == 1),
Males = items.Count(x => x.IndividualObservation.SexCodeId == 2),
UnSexed = items.Count(x => x.IndividualObservation.SexCodeId == 3),
numberFromCurrentSet = items.Count(x => x.IndividualObservation.ParentGuid == setDetailGuid)
});
var group = await queryable.FirstOrDefaultAsync();