Como passar lambda 'include' com vários níveis no Entity Framework Core?

Eu tenho um repositório que obtém uma expressão lambda para 'include'.

public TEntity FirstOrDefault(Expression<Func<TEntity, bool>> predicate, params Expression<Func<TEntity, object>>[] includePaths)
    {
        return Context.Set<TEntity>().Includes(includePaths).FirstOrDefault(predicate);
    }

Nas versões anteriores do EF, eu o usava em camadas de serviços como:

var plan = _unitOfWork.PlanRepository
            .FirstOrDefault(
                p => p.Id == id, 
                include => include.PlanSolutions.Select(ps => ps.Solution)
            );

Onde 'PlanSolutions' é uma coleção e 'Solution' é uma propriedade aninhada em 'PlanSolution'.

Mas agora esse código recebe um erro:

InvalidOperationException: a expressão de propriedade 'include => {de PlanSolutions ps em [include] .PlanSolutions, selecione [ps] .Solution}' não é válida. A expressão deve representar um acesso à propriedade: 't => t.MyProperty'. Para obter mais informações sobre como incluir dados relacionados, consultehttp://go.microsoft.com/fwlink/?LinkID=746393.

Agora parece que não posso usar o método 'Select' para obter vários níveis, mas também não posso usar o método 'ThenInclude' sugerido pela Microsoft, porque a consulta está localizada dentro do repositório onde o serviço não possui um acesso a. Existe alguma maneira de curá-lo?

questionAnswers(2)

yourAnswerToTheQuestion