Старайтесь избегать конструкции FirstOrDefault().Something
- деревья выражений не поддерживают оператор ?.
, который обычно используется в аналогичном запросе LINQ to Objects, и в настоящее время в EF Core возникают проблемы с его корректным переводом - если вы посмотрите на трассировку стека исключенийСкорее всего, исключение исходит из инфраструктуры EF Core без пользовательского кода.
Я бы рекомендовал переписать запрос LINQ без таких конструкций, например, что-то вроде этого:
var results = _context.ReviewRounds
.Where(rr => rr.Id == reviewRoundId)
.Select(rr => new ReviewRoundDTO_student
{
Id = rr.Id,
SubmissionId = rr.Submissions
.Where(s => s.StudentId == currentUser.Id)
.Select(s => s.Id)
.FirstOrDefault(),
Peers = rr.Submissions
.Where(s => s.StudentId == currentUser.Id)
.Take(1)
.SelectMany(s => s.PeerGroup.PeerGroupMemberships)
.Select(m => new ApplicationUserDto
{
FullName = m.User.FullName,
Id = m.UserId
})
.ToList(),
})
.FirstOrDefault();
Обратите внимание, что Include
/ ThenInclude
не нужны в проекционных запросах, поскольку они игнорируются .