LINQ to Entities не распознает метод в коррелированном запросе

Я использую AutoMapper ProjectTo для отображения сложных объектов на более простые объекты DTO:

Это работает:

Dim items = From team In db.Teams.ProjectTo(Of TeamDto)

и это работает:

Dim items = From team In db.Players.ProjectTo(Of TeamDto)

Но это не работает

Dim items = From team In db.Teams.ProjectTo(Of TeamDto)
    From player In dbPlayers.ProjectTo(Of PlayerDto).
    Where(Function(player) player.TeamId = team.Id).
    OrderByDescending(Function(player) player.TotalPoints).
    Take(5)

Это вызывает страшную ошибку:

LINQ to Entities does not recognize the method 'System.Linq.IQueryable`1[PlayerDto] ProjectTo[Player](System.Linq.IQueryable, System.Linq.Expressions.Expression`1[System.Func`2[PlayerDto,System.Object]][])' method, and this method cannot be translated into a store expression.

Кажется, что-то в коррелированном запросе ломает AutoMapper, но я ничего не пробовал, работает вокруг этого.

ОБНОВЛЕНИЕ: На самом деле это, по-видимому, не связано с AutoMapper, поскольку я пробовал это с обычным методом расширения в IQueryable, и это также работает при применении к таблице команд, но вызывает ту же проблему при применении к таблице игроков. Так что это, кажется, странность EF.

0 ответов

Другие вопросы по тегам