Não há muito o que responder aqui. Se sua ferramenta ORM não produzir a consulta SQL esperada de uma consulta LINQ simples, não há como permitir isso reescrevendo a consulta (e você não deveria estar fazendo isso em primeiro lugar).
O EF Core tem um conceito de avaliação mista de cliente/banco de dados em consultas LINQ o que permite que eles liberem versões do EF Core com processamento de consulta incompleto/muito ineficiente, como no seu caso.
Trecho de Recursos que não estão no EF Core (observe a palavra não ) e Roteiro :
Em breve, eles estão planejando melhorar o processamento de consultas, mas não sabemos quando isso acontecerá e qual o nível de graduação (lembre-se que o modo misto permite que eles considerem a consulta "funcionando").
Então, quais são as opções?
- Primeiro, fique longe do EF Core até que ele se torne realmente útil. Volte para o EF6, ele não apresenta esses problemas.
- Se você não puder usar o EF6, mantenha-se atualizado com a versão mais recente do EF Core.
Por exemplo, tanto na v1.0.1 quanto na v1.1.0 sua consulta gera o SQL pretendido (testado), então você pode simplesmente atualizar e o problema concreto desaparecerá.
Mas observe que, juntamente com as melhorias, os novos lançamentos introduzem bugs/regressões (como você pode ver aqui EFCore retornando muitas colunas para uma junção LEFT OUTER simples por exemplo), faça isso por sua conta e risco (e considere a primeira opção novamente, ou seja, Qual é a certa para você :)