Non c'è molto da rispondere qui. Se il tuo strumento ORM non produce la query SQL prevista da una semplice query LINQ, non è possibile che lo faccia riscrivendo la query (e non dovresti farlo in primo luogo).
EF Core ha un concetto di valutazione mista client/database nelle query LINQ che consente loro di rilasciare versioni di EF Core con elaborazione delle query incompleta/molto inefficiente come nel tuo caso.
Estratto da Funzioni non in EF Core (nota la parola non ) e Roadmap :
A breve, stanno pianificando di migliorare l'elaborazione delle query, ma non sappiamo quando accadrà e quale livello di laurea (ricorda che la modalità mista consente loro di considerare le query "funzionanti").
Allora quali sono le opzioni?
- In primo luogo, stai lontano da EF Core finché non diventa davvero utile. Torna a EF6, non ha problemi di questo tipo.
- Se non riesci a utilizzare EF6, tieniti aggiornato con l'ultima versione di EF Core.
Ad esempio, sia nella v1.0.1 che nella v1.1.0 la query genera l'SQL previsto (testato), quindi puoi semplicemente eseguire l'aggiornamento e il problema concreto sarà risolto.
Ma tieni presente che, insieme ai miglioramenti, le nuove versioni introducono bug/regressioni (come puoi vedere qui EFCore restituisce troppe colonne per un semplice join LEFT OUTER per esempio), quindi fallo a tuo rischio (e considera di nuovo la prima opzione, ovvero Quello che fa per te :)