Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 35720|Svar: 2

[Kilde] Forskellen mellem Expression<Func<T, bool>> og Func<T, bool> i EF

[Kopier link]
Opslået på 26/09/2021 09.21.21 | | | |
Func<TObject, bool> er en delegeret

Udtryk<Func<TObject, bool>> er udtryk

Udtrykket bliver en delegeret efter kompilering, før det kan køres. Som hvad

Udtryk<Func<int, bool>> ex = x=>x < 100;

Func<int, bool> func = ex. Kompiler();

Så kan du kalde func:

func(5) //-returnerer true

func(200) //- returnerer falsk

Udtryk kan ikke kaldes direkte.

Tilfælde:Forkert forespørgselskode forårsager en fuld tabelforespørgsel i databasen

Fejlkoden er som følger:

Send en variabel af typen Func som argument til Count-metoden,EF forespørger alle data i hele tabellen og filtrerer dem fra hukommelsen。 Den genererede SQL-sætning ser sådan ud:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Udført DbCommand (8ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      VÆLG [c]. [id], [c]. [client_type], [c]. [status], [c]. [lejer]
      FRA [tabel] SOM [c]
Den korrekte kode er som følger:

Den korrekte skrivning tilføjer en where-betingelse fra databasen og returnerer derefter værdien af tællingen direkte。 Den genererede SQL-sætning ser sådan ud:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Udført DbCommand (4ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      VÆLG ANTAL(*)
      FRA [tabel] SOM [c]
      HVOR [c]. [client_type] = 1


EF Core Series 4 ser på de genererede SQL-sætninger
https://www.itsvse.com/thread-9564-1-1.html
ef viser de genererede SQL-sætninger
https://www.itsvse.com/thread-3813-1-1.html

Ved brug af Func delegerede kald erSystem.Linq.EnumerableOptæl nedenfor

Udtrykket kaldes med Expression<Func<T, bool>> erSystem.Linq.QueryableOptæl nedenfor



(Slut)





Tidligere:[Øvelse] Lav en grøn no-install version af Java JDK Windows
Næste:Java sender SMS-verifikationskoder gennem Alibaba Cloud SMS SDK
Opslået på 26/09/2021 16.19.52 |
klog
Opslået på 26/09/2021 17.31.25 |
Ja, jeg er her for at lære igen...
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com