AFAIK não há suporte para CTEs recursivos no LINQ nem no EF. A solução é expor o CTE como view. O artigo sobre consultas recursivas ou hierárquicas usando EF Code First e Migrations mostra como implantar essa exibição usando EF code first migrations.
A tentativa de emular CTEs fazendo iterações recursivas do lado do cliente não é dimensionada para grandes conjuntos de dados e resulta em uma troca de conversa com o servidor. Observe como seu código EF retorna
IEnumerable
não IQueryable
, significa que ele materializa cada nível e então concatena o próximo nível para cada entrada como uma solicitação separada . A solução baseada em LINQ funcionará razoavelmente para hierarquias superficiais com contagem de entrada limitada (e observe que muitos projetos podem tem esse layout de dados, postagens/respostas de usuários sendo um exemplo típico), mas desmoronará sob hierarquias profundas com muitos elementos.