Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 35720|Απάντηση: 2

[Πηγή] Η διαφορά μεταξύ Expression<Func<T, bool>> και Func<T, bool> στο EF

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 26/9/2021 9:21:21 π.μ. | | | |
Func<TObject, bool> είναι αντιπρόσωπος

Έκφραση<Func<TObject, bool>> είναι εκφράσεις

Η έκφραση θα γίνει πληρεξούσιος μετά τη μεταγλώττιση πριν από την εκτέλεσή της. Όπως αυτό που

Έκφραση<Func<int, bool>> ex = x=>x < 100;

Func<int, bool> func = πρώην. Compile();

Στη συνέχεια, μπορείτε να καλέσετε το func:

func(5) //-επιστρέφει true

func(200) //- επιστρέφει false

Οι εκφράσεις δεν μπορούν να κληθούν απευθείας.

Υπόθεση:Ο εσφαλμένος κώδικας ερωτήματος προκαλεί ένα ερώτημα πλήρους πίνακα της βάσης δεδομένων

Ο κωδικός σφάλματος έχει ως εξής:

Περάστε μια μεταβλητή τύπου Func ως όρισμα στη μέθοδο Count,Το EF υποβάλλει ερωτήματα σε όλα τα δεδομένα σε ολόκληρο τον πίνακα και τα φιλτράρει από τη μνήμη。 Η πρόταση SQL που δημιουργείται μοιάζει με αυτό:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Εκτελεσμένο DbCommand (8ms) [Παράμετροι=[], CommandType='Κείμενο', CommandTimeout='30']
      ΕΠΙΛΟΓΗ [ c ]. [id], [c]. [client_type], [γ]. [κατάσταση], [c]. [ενοικιαστής]
      ΑΠΟ [πίνακας] AS [γ]
Ο σωστός κωδικός είναι ο εξής:

Η σωστή γραφή προσθέτει μια συνθήκη where από τη βάση δεδομένων και στη συνέχεια επιστρέφει απευθείας την τιμή του count。 Η πρόταση SQL που δημιουργείται μοιάζει με αυτό:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Εκτελεσμένο DbCommand (4ms) [Παράμετροι=[], CommandType='Κείμενο', CommandTimeout='30']
      ΕΠΙΛΈΞΤΕ COUNT(*)
      ΑΠΟ [πίνακας] AS [γ]
      ΟΠΟΥ [γ]. [client_type] = 1


Το EF Core Series 4 εξετάζει τις προτάσεις SQL που δημιουργούνται
https://www.itsvse.com/thread-9564-1-1.html
Το ef εμφανίζει τις προτάσεις SQL που δημιουργούνται
https://www.itsvse.com/thread-3813-1-1.html

Η χρήση κλήσεων πληρεξουσίων Func είναιSystem.Linq.EnumerableΜετρήστε παρακάτω

Η έκφραση που καλείται με Expression<Func<T, bool>> είναιSystem.Linq.QueryableΜετρήστε παρακάτω



(Τέλος)





Προηγούμενος:[Εξάσκηση] Δημιουργήστε μια πράσινη έκδοση χωρίς εγκατάσταση των Windows Java JDK
Επόμενος:Η Java στέλνει κωδικούς επαλήθευσης SMS μέσω του Alibaba Cloud SMS SDK
Δημοσιεύτηκε στις 26/9/2021 4:19:52 μ.μ. |
πολυμαθής
Δημοσιεύτηκε στις 26/9/2021 5:31:25 μ.μ. |
Ναι, είμαι εδώ για να μάθω ξανά...
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com