Трассировка стека исключений показывает, что исключение происходит из инфраструктуры EF Core
at Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor.MemberAccessShiftingExpressionVisitor.VisitExtension(Expression node)
, что явно указывает на ошибку EF Core.
Обратите внимание, что проекция с использованием конструкторов поддерживается только на стороне клиента, т.е. только когда это последняя операция запроса, поэтому, скорее всего, ошибка вызвана отсутствующим регистром в конвейере обработки запросов EF Core 3.x.
В любом случае, вы не задали конкретный вопрос, просто показали проблема и симптомы, поэтому вам действительно нужно go и сообщить об этом по номеру https://github.com/dotnet/efcore/issues.
Если вы ищете обходной путь, я могу предложить следующие два.
Если вам нужно только y
, вы можете переместить Select
после SelectMany
, например,
.SelectMany(x => x.Cats).Select(y => new MyClass(y.Name));
Если вам нужны оба x
и y
, или вообще, вы можете заменить Select
перегрузкой SelectMany
с помощью селектора результатов, например
.SelectMany(x => x.Cats, (x, y) => new MyClass(x.Id, y.Name))