Тук няма много за отговор. Ако вашият ORM инструмент не произведе очакваната SQL заявка от обикновена LINQ заявка, няма начин да го оставите да го направи, като пренапише заявката (и не трябва да правите това на първо място).
EF Core има концепция за смесена оценка на клиент/база данни в LINQ заявки което им позволява да пускат версии на EF Core с непълна/много неефективна обработка на заявки, както е във вашия случай.
Извадка от Функции, които не са в EF Core (обърнете внимание на думата не ) и Пътна карта :
Наскоро те планират да подобрят обработката на заявките, но не знаем кога ще се случи това и на какво ниво (не забравяйте, че смесеният режим им позволява да считат заявката за „работеща“).
И така, какви са опциите?
- Първо, стойте далеч от EF Core, докато не стане наистина полезен. Върнете се към EF6, той няма такива проблеми.
- Ако не можете да използвате EF6, бъдете актуализирани с най-новата версия на EF Core.
Например, както в v1.0.1, така и в v1.1.0, вашата заявка генерира желания SQL (тестван), така че можете просто да надстроите и конкретният проблем ще изчезне.
Но имайте предвид, че заедно с подобренията новите версии въвеждат грешки/регресии (както можете да видите тук EFCore връща твърде много колони за обикновено LEFT OUTER присъединяване например), така че направете това на свой собствен риск (и помислете отново за първата опция, т.е. Кой е подходящ за вас :)