See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 35720|Vastuse: 2

[Allikas] Erinevus Expression<Func<T, bool>> ja Func<T, bool> vahel EF-is

[Kopeeri link]
Postitatud 26.09.2021 09:21:21 | | | |
Func<TObject, bool> on delegaat

Expression<Func<TObject, bool>> on avaldised

Expression muutub delegaadiks pärast kompileerimist enne, kui seda saab käivitada. Nagu mis

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

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

Siis saad kutsuda func:

func(5) //-tagastab tõe

func(200) //- tagastab false

Avaldisi ei saa otseselt kutsuda.

Kohtuasi:Vale päringukood põhjustab andmebaasis täistabeli päringu

Veakood on järgmine:

Edastame argumendina Func tüüpi muutuja Count meetodile,EF pärib kogu tabeli andmed ja filtreerib need mälust。 Genereeritud SQL-lause näeb välja selline:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Täidetud DbCommand (8ms) [parameetrid=[], CommandType='tekst', CommandTimeout='30']
      VALI [c]. [id], [c]. [client_type], [c]. [staatus], [c]. [üürnik]
      ALATES [laud] AS [c]
Õige kood on järgmine:

Õige kirjutamine lisab andmebaasist kus tingimuse ja tagastab seejärel loenduse väärtuse otse。 Genereeritud SQL-lause näeb välja selline:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Täidetud DbCommand (4ms) [parameetrid=[], CommandType='tekst', CommandTimeout='30']
      SELECT COUNT(*)
      ALATES [laud] AS [c]
      KUS [c]. [client_type] = 1


EF Core Series 4 vaatleb genereeritud SQL-lauseid
https://www.itsvse.com/thread-9564-1-1.html
ef kuvab genereeritud SQL-laused
https://www.itsvse.com/thread-3813-1-1.html

Func-i delegaatide kõnede kasutamine onSystem.Linq.EnumerableLoend allpool

Avaldis, mida nimetatakse Expression<Func<T, bool>> onSystem.Linq.QueryableLoend allpool



(Lõpp)





Eelmine:[Harjuta] Tee roheline Java JDK Windowsi versioon ilma installita
Järgmine:Java saadab SMS-kinnituskoode Alibaba Cloud SMS SDK kaudu
Postitatud 26.09.2021 16:19:52 |
Õppinud
Postitatud 26.09.2021 17:31:25 |
Jah, ma olen siin, et uuesti õppida...
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com