Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 35720|Atbildi: 2

[Avots] Atšķirība starp Expression<Func<T, bool>> un Func<T, bool> EF

[Kopēt saiti]
Publicēts 26.09.2021 09:21:21 | | | |
Func<TObject, bool> ir delegāts

Izteiksme<Func<TObject, bool>> ir izteiksmes

Izteiksme pēc kompilēšanas kļūs par pārstāvi, pirms to varēs palaist. Piemēram, kas

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

Func<int, bool> func = ex. Kompilēt();

Tad jūs varat piezvanīt func:

func(5) //-atgriež true

func(200) //- atgriež false

Izteiksmes nevar izsaukt tieši.

Gadījums:Nepareizs vaicājuma kods izraisa datu bāzes pilnas tabulas vaicājumu

Kļūdas kods ir šāds:

Nododiet Func tipa mainīgo kā argumentu Count metodei,EF vaicā visus datus visā tabulā un filtrē tos no atmiņas。 Ģenerētais SQL paziņojums izskatās šādi:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Izpildīta DbCommand (8ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      ATLASIET [c]. [id], [c]. [client_type], [c]. [statuss], [c]. [īrnieks]
      FROM [tabula] AS [c]
Pareizais kods ir šāds:

Pareiza rakstīšana pievieno nosacījumu where no datu bāzes un pēc tam tieši atgriež skaita vērtību。 Ģenerētais SQL paziņojums izskatās šādi:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Izpildīta DbCommand (4ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      ATLASIET COUNT(*)
      FROM [tabula] AS [c]
      KUR [c]. [client_type] = 1


EF Core Series 4 aplūko ģenerētos SQL priekšrakstus
https://www.itsvse.com/thread-9564-1-1.html
ef parāda ģenerētos SQL priekšrakstus
https://www.itsvse.com/thread-3813-1-1.html

Func pārstāvju zvanu izmantošana irSistēma.Linq.UzskaitītsSkaits zemāk

Izteiksme, ko sauc ar Expression<Func<T, bool>> irSistēma.Linq.QueryableSkaits zemāk



(Beigas)





Iepriekšējo:[Prakse] Izveidojiet zaļu Java JDK Windows versiju bez instalēšanas
Nākamo:Java sūta SMS verifikācijas kodus, izmantojot Alibaba Cloud SMS SDK
Publicēts 26.09.2021 16:19:52 |
Uzzināju
Publicēts 26.09.2021 17:31:25 |
Jā, es esmu šeit, lai atkal mācītos ...
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com