sql >> Databasteknik >  >> RDS >> Sqlserver

Entity Framework Kärnantal har inte optimal prestanda

Det finns inte mycket att svara på här. Om ditt ORM-verktyg inte producerar den förväntade SQL-frågan från en enkel LINQ-fråga, kan du inte låta det göra det genom att skriva om frågan (och du borde inte göra det i första hand).

EF Core har ett koncept med blandad klient/databasutvärdering i LINQ-frågor vilket gör att de kan släppa EF Core-versioner med ofullständig/mycket ineffektiv frågebehandling som i ditt fall.

Utdrag från Funktioner som inte finns i EF Core (observera ordet inte ) och Vägkarta :

Inom kort planerar de att förbättra frågebehandlingen, men vi vet inte när det kommer att hända och vilken grad av nivå (kom ihåg att det blandade läget tillåter dem att överväga att frågan "fungerar").

Så vad finns det för alternativ?

  • Först, håll dig borta från EF Core tills det blir riktigt användbart. Gå tillbaka till EF6, det har inga sådana problem.
  • Om du inte kan använda EF6, håll dig uppdaterad med den senaste EF Core-versionen.

Till exempel, i både v1.0.1 och v1.1.0 genererar du frågan den avsedda SQL-koden (testad), så att du helt enkelt kan uppgradera och det konkreta problemet kommer att försvinna.

Men observera att tillsammans med förbättringar introducerar de nya utgåvorna buggar/regressioner (som du kan se här EFCore returnerar för många kolumner för en enkel LEFT OUTER-join till exempel), så gör det på egen risk (och överväg det första alternativet igen, d.v.s. Vilken är rätt för dig :)



  1. oracle jdbc drivrutin version galenskap

  2. Använder du Excel för din databas? Här är varför du bör uppgradera till Access

  3. Hur håller jag värdena för en kolumn unika i MySQL?

  4. PHP Array som indata till lagrad procedur