Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 35720|Odpowiedź: 2

[Źródło] Różnica między Expression<Func<T, bool>> a Func<T, bool> w EF

[Skopiuj link]
Opublikowano 26.09.2021 09:21:21 | | | |
Func<TObject, bool> to delegat

Wyrażenie<Funkc<TObject, bool>> to wyrażenia

Ekspresja stanie się delegatem po kompilacji, zanim będzie mogła zostać uruchomiona. Na przykład co

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

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

Wtedy możesz wywołać funkc:

func(5) //-zwraca prawdziwość

func(200) //- zwraca false

Wyrażeń nie można wywoływać bezpośrednio.

Przypadek:Nieprawidłowy kod zapytania powoduje pełne zapytanie tabelowe bazy danych

Kod błędu jest następujący:

Przekaż zmienną typu Func jako argument do metody Count,EF zapytuje wszystkie dane z całej tabeli i filtruje je z pamięci。 Wygenerowane wyrażenie SQL wygląda tak:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Wykonano polecenie DbCommand (8ms) [Parametry=[], CommandType='Text', CommandTimeout='30']
      WYBIERZ [c]. [tamże], [c]. [client_type], [c]. [status], [c]. [lokator]
      Z [tabela] AS [c]
Poprawny kod brzmi następująco:

Poprawne zapisywanie dodaje warunek where z bazy danych, a następnie zwraca wartość liczby bezpośrednio。 Wygenerowane wyrażenie SQL wygląda tak:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Wykonano DbCommand (4ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      WYBIERZ COUNT(*)
      Z [tabela] AS [c]
      GDZIE [c]. [client_type] = 1


EF Core Series 4 analizuje generowane instrukcje SQL
https://www.itsvse.com/thread-9564-1-1.html
ef wyświetla wygenerowane instrukcje SQL
https://www.itsvse.com/thread-3813-1-1.html

Używając wywołań delegatów Func, toSystem.Linq.EnumerableLicz poniżej

Wyrażenie wywołane przez Expression<Func<T, bool>> toSystem.Linq.QueryableLicz poniżej



(Koniec)





Poprzedni:[Ćwiczenie] Stwórz zieloną wersję Windows Java JDK bez instalacji
Następny:Java wysyła kody weryfikacyjne SMS za pośrednictwem Alibaba Cloud SMS SDK
Opublikowano 26.09.2021 16:19:52 |
uczony
Opublikowano 26.09.2021 17:31:25 |
Tak, przyszłam się uczyć na nowo...
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com