Pri vývoji, pri používaní frameworku EF Core, pri použití linq alebo lambda výrazov, nemôžeme priamo zobraziť SQL príkazy, čo je pre nás nepraktické pri riešení problémov alebo optimalizácii výkonu.
Tento článok používa EF Core 5 ako príkladna zobrazenie SQL príkazov generovaných výstupným EF.
Najprv vytvorte novú consolelogger factory premennú v štartovacom súbore s premennou "ConsoleLoggerFactory" a generovaný SQL príkaz bude vypísaný do konzoly, kód je nasledovný:
Pridajte výstup logu do metódy ConfigureServices konfiguráciou kódu DbContext nasledovne:
Spustite projekt a pozrite si výstup z konzoly nasledovne:
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Vykonaný DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] VYBERTE [a]. [Id], [a]. [Disabled], [a]. [Odkaz], [a]. [Name], [a]. [PinYin], [a]. [Pozícia], [a]. [_CreateTime], [a]. [_CreateTimeStamp], [a]. [_UpdateTime], [a]. [_UpdateTimeStamp] FROM [Area] AS [a]
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Vykonaný DbCommand (19ms) [Parametre=[p0='?' (Veľkosť = 4000)], CommandType='Text', CommandTimeout='30'] VYBRAŤ * Z oblasti KDE pinYin = @p0
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Vykonaný DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] VYBRAŤ * Z oblasti
Ak SQL príkaz s podmienkou where dokáže zobraziť iba parametrizované premenné, nie konkrétne hodnoty, ktoré sa odovzdali, pridá sa nasledujúca konfigurácia:
Umožnite zahrnutie aplikačných dát do výnimiek, logov a ďalších údajov.
To môže zahŕňať hodnoty priradené vlastnostiam inštancie entít,
hodnoty parametrov príkazov odoslaných do databázy a ďalšie takéto údaje.
Táto vlajka by mala byť zapnutá len v prípade bezpečnostných opatrení
Na základe citlivosti týchto údajov.
Všimnite si, či žiadosť prechádza
Zavolajte generátor Microsoft.EntityFrameworkCore.DbContextOptions.UseInternalServiceProvider(system. IServiceProvider),
Táto možnosť musí byť potom nakonfigurovaná rovnakým spôsobom pre všetky použitia daného poskytovateľa služieb.
Zvážte, že nevoláte Microsoft.EntityFrameworkCore.DbContextOptionsGenerator.UseInternalServiceProvider(system. IServiceProvider)
EF teda spravuje poskytovateľa služieb a môže vytvárať nové inštancie podľa potreby
Kompletné nastavenie je nasledovné:
Vizualizácie sú nasledovné:
Samozrejme, vyššie uvedené nastavenia je možné nastaviť aj prepísaním metódy OnConfiguring v DbContext (čo sa neodporúča):
(Koniec)
|