Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 35720|Atsakyti: 2

[Šaltinis] Skirtumas tarp Expression<Func<T, bool>> ir Func<T, bool> EF

[Kopijuoti nuorodą]
Paskelbta 2021-09-26 09:21:21 | | | |
Func<TObject, bool> yra delegatas

Išraiška<Func<TObject, bool>> yra išraiškos

Išraiška taps delegate po kompiliavimo prieš ją paleidžiant. Kaip ką

Išraiška<Func<int, bool>> ex = x=>x < 100;

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

Tada galite paskambinti func:

func(5) //-grąžina true

func(200) //- grąžina false

Išraiškų negalima iškviesti tiesiogiai.

Byla:Neteisingas užklausos kodas sukelia visos lentelės duomenų bazės užklausą

Klaidos kodas yra toks:

Perduokite Func tipo kintamąjį kaip argumentą Count metodui,EF užklausia visus visos lentelės duomenis ir filtruoja juos iš atminties。 Sugeneruotas SQL sakinys atrodo taip:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Įvykdyta DbCommand (8ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      PASIRINKITE [c]. [id], [c]. [client_type], [c]. [statusas], [c]. [nuomininkas]
      FROM [lentelė] AS [c]
Teisingas kodas yra toks:

Teisingas rašymas prideda kur sąlygą iš duomenų bazės ir tada tiesiogiai grąžina skaičiavimo reikšmę。 Sugeneruotas SQL sakinys atrodo taip:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Įvykdyta DbCommand (4ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      PASIRINKITE COUNT(*)
      FROM [lentelė] AS [c]
      KUR [c]. [client_type] = 1


EF Core Series 4 peržiūri sugeneruotus SQL sakinius
https://www.itsvse.com/thread-9564-1-1.html
ef rodo sugeneruotus SQL sakinius
https://www.itsvse.com/thread-3813-1-1.html

Naudojant "Func" atstovų skambučius galimaSystem.Linq.EnumerableSkaičiuoti žemiau

Išraiška, vadinama Expression<Func<T, bool>> yraSystem.Linq.QueryableSkaičiuoti žemiau



(Pabaiga)





Ankstesnis:[Praktika] Sukurkite žalią "Java JDK Windows" versiją be diegimo
Kitą:"Java" siunčia SMS patvirtinimo kodus per "Alibaba Cloud SMS SDK"
Paskelbta 2021-09-26 16:19:52 |
Sužinojau
Paskelbta 2021-09-26 17:31:25 |
Taip, aš čia mokytis dar kartą...
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com