Tidak banyak yang bisa dijawab di sini. Jika alat ORM Anda tidak menghasilkan kueri SQL yang diharapkan dari kueri LINQ sederhana, Anda tidak dapat membiarkannya melakukannya dengan menulis ulang kueri (dan Anda seharusnya tidak melakukannya sejak awal).
EF Core memiliki konsep evaluasi klien/database campuran dalam kueri LINQ yang memungkinkan mereka merilis versi EF Core dengan pemrosesan kueri yang tidak lengkap/sangat tidak efisien seperti dalam kasus Anda.
Kutipan dari Fitur yang tidak ada di EF Core (perhatikan kata tidak ) dan Peta Jalan :
Tidak lama lagi, mereka berencana untuk meningkatkan pemrosesan kueri, tetapi kami tidak tahu kapan itu akan terjadi dan tingkat derajat apa (ingat mode campuran memungkinkan mereka untuk mempertimbangkan kueri "berfungsi").
Jadi apa saja pilihannya?
- Pertama, jauhi EF Core sampai benar-benar berguna. Kembali ke EF6, tidak ada masalah seperti itu.
- Jika Anda tidak dapat menggunakan EF6, tetap perbarui dengan versi EF Core terbaru.
Misalnya, di v1.0.1 dan v1.1.0 kueri Anda menghasilkan SQL yang dimaksud (diuji), sehingga Anda dapat dengan mudah memutakhirkan dan masalah konkret akan hilang.
Namun perhatikan bahwa seiring dengan peningkatan, rilis baru memperkenalkan bug/regresi (seperti yang Anda lihat di sini EFCore mengembalikan terlalu banyak kolom untuk gabungan LEFT OUTER sederhana misalnya), jadi lakukan itu dengan risiko Anda sendiri (dan pertimbangkan opsi pertama lagi, yaitu Mana yang Tepat untuk Anda :)