sql >> Databáze >  >> RDS >> Sqlserver

Entity Framework Core count nemá optimální výkon

Tady není moc co odpovídat. Pokud váš nástroj ORM nevytvoří očekávaný SQL dotaz z jednoduchého dotazu LINQ, neexistuje způsob, jak mu to dovolit přepsáním dotazu (a to byste v první řadě neměli dělat).

EF Core má koncept smíšeného hodnocení klient/databáze v dotazech LINQ což jim umožňuje vydávat verze EF Core s neúplným/velmi neefektivním zpracováním dotazů jako ve vašem případě.

Výňatek z Funkce, které nejsou v EF Core (všimněte si slova ne ) a Cestovní mapa :

Brzy plánují zlepšit zpracování dotazů, ale nevíme, kdy k tomu dojde a na jaké úrovni (pamatujte, že smíšený režim jim umožňuje považovat dotaz za „funkční“).

Jaké jsou tedy možnosti?

  • Nejprve se držte dál od EF Core, dokud se nestane opravdu užitečným. Vraťte se k EF6, nemá žádné takové problémy.
  • Pokud nemůžete použít EF6, zůstaňte informováni o nejnovější verzi EF Core.

Například ve verzi 1.0.1 a 1.1.0 váš dotaz vygeneruje zamýšlené SQL (testováno), takže můžete jednoduše upgradovat a konkrétní problém bude pryč.

Všimněte si však, že spolu s vylepšeními nová vydání zavádějí chyby/regrese (jak můžete vidět zde EFCore vrací příliš mnoho sloupců pro jednoduché spojení LEFT OUTER například), takže to udělejte na vlastní riziko (a znovu zvažte první možnost, tj. Který je pro vás ten pravý :)



  1. Zpoždění spuštění/procedury MySQL

  2. Jak vytvořit naplněný MySQL Docker Image v době sestavení

  3. MySQL Select Query - Získejte pouze prvních 10 znaků hodnoty

  4. Facebook Registration Connect