Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 35720|Відповідь: 2

[Джерело] Різниця між Expression<Func<T, bool>> та Func<T, bool> у EF

[Копіювати посилання]
Опубліковано 26.09.2021 09:21:21 | | | |
Func<TObject, bool> — делегат

Експресія<Func<TObject, bool>> — це вирази

Експресія стає делегатом після компіляції до того, як його можна буде запустити. Наприклад, що саме

Експресія<Func<int, bool>> ex = x=>x < 100;

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

Тоді можна назвати func:

func(5) //-повертає true

func(200) //- повертає false

Вирази не можна викликати безпосередньо.

Випадок:Неправильний код запиту викликає повний таблицевий запит до бази даних

Код помилки виглядає так:

Передайте змінну типу Func як аргумент методу Count,EF запитує всі дані в всій таблиці та фільтрує їх з пам'яті。 Згенерований SQL-оператор виглядає так:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Виконано DbCommand (8ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      ВИБЕРІТЬ [c]. [id], [c]. [client_type], [c]. [статус], [c]. [орендар]
      З [таблиці] AS [c]
Правильний код виглядає так:

Правильне написання додає умову where з бази даних і безпосередньо повертає значення рахунку。 Згенерований SQL-оператор виглядає так:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Виконано DbCommand (4 мс) [Parameters=[], CommandType='Text', CommandTimeout='30']
      ВИБРАТИ ПІДРАХУНОК(*)
      З [таблиці] AS [c]
      ДЕ [c]. [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.ElistableРахуйте нижче

Вираз, який називається Expression<Func<T, bool>> —System.Linq.QueryableРахуйте нижче



(Кінець)





Попередній:[Практика] Зробіть зелену версію Java JDK Windows без встановлення
Наступний:Java надсилає SMS-коди верифікації через Alibaba Cloud SMS SDK
Опубліковано 26.09.2021 16:19:52 |
Дізнався
Опубліковано 26.09.2021 17:31:25 |
Так, я тут, щоб знову навчитися...
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com