Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 35720|Válasz: 2

[Forrás] A különbség az Expression<Func<T, bool>> és Func<T, bool> között az EF-ben

[Linket másol]
Közzétéve 2021. 09. 26. 9:21:21 | | | |
Func<TObject, bool> delegált

Expression<Func<TObject, bool>> kifejezések

Az Expression a fordítás után delegálttá válik, mielőtt futtathatnánk. Mint mit

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

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

Ezután hívhatod a func-t:

func(5) //-true

func(200) //- hamisat ad

Az kifejezések nem hívhatók közvetlenül.

Eset:A helytelen lekérdezési kód teljes táblázatlekérdezést eredményez az adatbázisban

A hibakód a következő:

A Func típusú változót argumentumként adjuk át a Count metódusnak,Az EF lekérdezi az összes adatot az egész táblában, és szűri azokat a memóriából。 A generált SQL utasítás így néz ki:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Végrehajtott DbCommand (8ms) [paraméter=[], CommandType='Text', CommandTimeout='30']
      SELECT [c]. [id], [c]. [client_type], [c]. [állapot], [c]. [bérlő]
      FROM [táblázat] AS [c]
A helyes kód a következő:

A helyes írás hozzáad egy hol feltételt az adatbázisból, majd közvetlenül visszaadja a szám értékét。 A generált SQL utasítás így néz ki:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Végrehajtott DbCommand (4ms) [paraméter=[], CommandType='Text', CommandTimeout='30']
      SELECT COUNT(*)
      FROM [táblázat] AS [c]
      AHOL [c]. [client_type] = 1


Az EF Core Series 4 a generált SQL utasításokat vizsgálja
https://www.itsvse.com/thread-9564-1-1.html
ef megjeleníti a generált SQL utasításokat
https://www.itsvse.com/thread-3813-1-1.html

A Func delegált hívások használata a következőkSystem.Linq.EnumerableSzámolás alább

Az Expression<Func<T, bool>> kifejezésSystem.Linq.QueryableSzámolás alább



(Vége)





Előző:[Gyakorlás] Készíts zöld, telepítetlen verziót a Java JDK Windowsból
Következő:A Java SMS ellenőrző kódokat küld az Alibaba Cloud SMS SDK-n keresztül
Közzétéve 2021. 09. 26. 16:19:52 |
tanult
Közzétéve 2021. 09. 26. 17:31:25 |
Igen, azért jöttem, hogy újra tanuljak...
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com