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

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

[Джерело] EF Core Series 4 розглядає згенеровані SQL-оператори

[Копіювати посилання]
Опубліковано 19.02.2021 13:36:34 | | | |
EF Core Series 2 інкапсулює OnModelCreating, створює індекси за допомогою відображень та інше
https://www.itsvse.com/thread-9392-1-1.html

EF Core Series (3) Атрибути тіні кадру сутності [Перевидання]
https://www.itsvse.com/thread-9558-1-1.html


У розробці, при використанні основного фреймворку ef, при використанні linq або lambda-виразів, ми не можемо безпосередньо переглядати sql-оператори, що незручно для усунення несправностей або оптимізації продуктивності.
ef відображає згенеровані SQL-оператори
https://www.itsvse.com/thread-3813-1-1.html

У цій статті використано EF Core 5 як прикладщоб переглянути SQL-оператори, згенеровані вихідним EF.


Спочатку створіть нову factory-змінну consolelogger у файлі запуску з змінною "ConsoleLoggerFactory", і згенерований sql-оператор буде виведений у консоль, код виглядає так:

Додайте вивід журналу до методу ConfigureServices, налаштувавши код DbContext наступним чином:

Почніть проєкт і подивіться результат консолі наступним чином:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Виконано DbCommand (1 мс) [Parameters=[], CommandType='Text', CommandTimeout='30']
      ВИБЕРІТЬ [a]. [Id], [a]. [Інвалід], [a]. [Посилання], [a]. [Ім'я], [a]. [Піньінь], [a]. [Позиція], [a]. [_CreateTime], [a]. [_CreateTimeStamp], [a]. [_UpdateTime], [a]. [_UpdateTimeStamp]
      З [Району] AS [a]
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Виконано DbCommand (19ms) [параметри=[p0='?' (Розмір = 4000)], CommandType='Текст', CommandTimeout='30']
      ВИБРАТИ * З Області, де pinYin = @p0
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Виконано DbCommand (1 мс) [Parameters=[], CommandType='Text', CommandTimeout='30']
      ВИБРАТИ * З РАЙОНУ


Якщо SQL-оператор з умовою where може бачити лише параметризовані змінні, а не конкретні передані значення, додається наступна конфігурація:

Дозвольте включати дані додатків у повідомлення про винятки, журнали та інше.

Це може включати значення, призначені властивостям екземплярів сутності,

значення параметрів команд, що надсилаються до бази даних, та інші подібні дані.

Цей прапор слід увімкнути лише за наявності заходів безпеки

Виходячи з чутливості цих даних.

Зверніть увагу, чи проходить заявка

Викликайте генератор Microsoft.EntityFrameworkCore.DbContextOptions.UseInternalServiceProvider(system. IServiceProvider),

Цю опцію потрібно налаштувати однаково для всього використання цього провайдера.

Розгляньте можливість не викликати Microsoft.EntityFrameworkCore.DbContextOptionsGenerator.UseInternalServiceProvider(system. IServiceProvider)

Отже, EF керуватиме провайдером послуг і може створювати нові екземпляри за потреби


Повна схема виглядає так:

Зображення такі:



Звісно, наведені вище налаштування також можна налаштувати, переобізначивши метод OnConfiguring у DbContext (не рекомендується):

(Кінець)




Попередній:Оцінки аналізу акцій Financial TipRanks
Наступний:EF Core Series (5) виконує SQL-оператори або перегляди, збережені процедури
 Орендодавець| Опубліковано 26.09.2021 09:21:07 |
ef відображає згенеровані SQL-оператори
https://www.itsvse.com/thread-3813-1-1.html
Опубліковано 26.10.2021 09:46:19 |
Вчися, подивись, який часовий ліміт
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com