Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 35720|Antwort: 2

[Quelle] Der Unterschied zwischen Expression<Func<T, bool>> und Func<T, bool> in EF

[Link kopieren]
Veröffentlicht am 26.09.2021 09:21:21 | | | |
Func<TObject, bool> ist ein Delegierter

Ausdruck<Func<TObject, bool>> sind Ausdrücke

Der Ausdruck wird nach der Kompilierung zu einem Delegierten, bevor er ausgeführt werden kann. Zum Beispiel

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

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

Dann kannst du func aufrufen:

func(5) //-Returns true

func(200) //- gibt falsch zurück

Ausdrücke können nicht direkt aufgerufen werden.

Fall:Falscher Abfragecode führt zu einer vollständigen Tabellenabfrage in der Datenbank

Der Fehlercode lautet wie folgt:

Übergebe eine Variable vom Typ Func als Argument an die Count-Methode,EF fragt alle Daten der gesamten Tabelle ab und filtert sie aus dem Speicher。 Die generierte SQL-Anweisung sieht so aus:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Ausgeführt DbCommand (8ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT [c]. [id], [c]. [client_type], [c]. [Status], [c]. [Mieter]
      AUS [Tabelle] ALS [c]
Der korrekte Code lautet wie folgt:

Die korrekte Schreibweise fügt eine where-Bedingung aus der Datenbank hinzu und gibt dann direkt den Wert des Counts zurück。 Die generierte SQL-Anweisung sieht so aus:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Ausgeführt DbCommand (4ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      WÄHLE ANZAHL(*)
      AUS [Tabelle] ALS [c]
      WO [c]. [client_type] = 1


EF Core Series 4 betrachtet die generierten SQL-Anweisungen
https://www.itsvse.com/thread-9564-1-1.html
ef zeigt die generierten SQL-Anweisungen an
https://www.itsvse.com/thread-3813-1-1.html

Mit Func-Delegiertenaufrufen sindSystem.Linq.EnumerableZähle unten

Der mit Expression<Func<T, bool>> bezeichnete Ausdruck istSystem.Linq.QueryableZähle unten



(Ende)





Vorhergehend:[Üben] Eine grüne No-Install-Version von Java JDK Windows erstellen
Nächster:Java sendet SMS-Verifizierungscodes über das Alibaba Cloud SMS SDK
Veröffentlicht am 26.09.2021 16:19:52 |
gelehrt
Veröffentlicht am 26.09.2021 17:31:25 |
Ja, ich bin hier, um wieder zu lernen...
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com