Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 35720|Odgovoriti: 2

[Vir] Razlika med Expression<Func<T, bool>> in Func<T, bool> v EF

[Kopiraj povezavo]
Objavljeno na 26. 09. 2021 09:21:21 | | | |
Func<TObject, bool> je delegat

Izrazi<Func<TObject, bool>> so izrazi

Izraz postane delegat po prevajanju, preden se lahko izvede. Kaj na primer

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

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

Potem lahko pokličete func:

func(5) //-vrne resnično

func(200) //- vrne napačno

Izrazov ni mogoče klicati neposredno.

Kovček:Nepravilna poizvedbena koda povzroči polno tabelo v bazi podatkov

Koda napake je naslednja:

Spremenljivko tipa Func kot argument pošljimo metodi Count,EF poizveduje vse podatke v celotni tabeli in jih filtrira iz pomnilnika。 Generirana SQL izjava izgleda takole:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Izveden DbCommand (8ms) [Parametri=[], CommandType='Text', CommandTimeout='30']
      IZBERI [c]. [id], [c]. [client_type], [c]. [status], [c]. [najemnik]
      IZ [miza] KOT [c]
Pravilna koda je naslednja:

Pravilno pisanje doda pogoj where iz baze podatkov in nato neposredno vrne vrednost štetja。 Generirana SQL izjava izgleda takole:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Izveden DbCommand (4ms) [Parametri=[], CommandType='Text', CommandTimeout='30']
      IZBERI COUNT(*)
      IZ [miza] KOT [c]
      KJER [c]. [client_type] = 1


EF Core Series 4 preučuje generirane SQL stavke
https://www.itsvse.com/thread-9564-1-1.html
ef prikazuje generirane SQL stavke
https://www.itsvse.com/thread-3813-1-1.html

Uporaba klica delegatov Func soSystem.Linq.EnumerableŠtetje spodaj

Izraz, imenovan z Expression<Func<T, bool>> jeSystem.Linq.QueryableŠtetje spodaj



(Konec)





Prejšnji:[Vaja] Naredite zeleno različico Java JDK Windows brez namestitve
Naslednji:Java pošilja SMS verifikacijske kode preko Alibaba Cloud SMS SDK
Objavljeno na 26. 09. 2021 16:19:52 |
Naučil
Objavljeno na 26. 09. 2021 17:31:25 |
Da, tukaj sem, da se spet učim...
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com