Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 35720|Răspunde: 2

[Sursă] Diferența dintre Expression<Func<T, bool>> și Func<T, bool> în EF

[Copiază linkul]
Postat pe 26.09.2021 09:21:21 | | | |
Func<TObject, bool> este un delegat

Expression<Func<TObject, bool>> sunt expresii

Expresia va deveni delegat după compilare înainte de a putea fi rulată. Cum ar fi

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

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

Atunci poți numi func:

func(5) //-returnează adevărat

func(200) //- returnează false

Expresiile nu pot fi chemate direct.

Caz:Un cod de interogare incorect determină o interogare completă a tabelului bazei de date

Codul de eroare este următorul:

Trece o variabilă de tip Func ca argument către metoda Count,EF interoghează toate datele din întregul tabel și le filtrează din memorie。 Instrucțiunea SQL generată arată astfel:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executat DbCommand (8ms) [Parametri=[], CommandType='Text', CommandTimeout='30']
      SELECT [c]. [id], [c]. [client_type], [c]. [status], [c]. [chiriaș]
      DE la [tabel] CA [c]
Codul corect este următorul:

Scrierea corectă adaugă o condiție where din baza de date și apoi returnează direct valoarea numărului。 Instrucțiunea SQL generată arată astfel:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executat DbCommand (4ms) [Parametri=[], CommandType='Text', CommandTimeout='30']
      SELECT COUNT(*)
      DE la [tabel] CA [c]
      UNDE [c]. [client_type] = 1


EF Core Series 4 analizează instrucțiunile SQL generate
https://www.itsvse.com/thread-9564-1-1.html
ef afișează instrucțiunile SQL generate
https://www.itsvse.com/thread-3813-1-1.html

Folosind apelurile delegate Func suntSystem.Linq.EnumerableNumărătoarea de mai jos

Expresia numită cu Expression<Func<T, bool>> esteSystem.Linq.QueryableNumărătoarea de mai jos



(Sfârșit)





Precedent:[Exersare] Fă o versiune verde fără instalare a Java JDK Windows
Următor:Java trimite coduri de verificare SMS prin Alibaba Cloud SMS SDK-ul
Postat pe 26.09.2021 16:19:52 |
învățat
Postat pe 26.09.2021 17:31:25 |
Da, am venit să învăț din nou...
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com