Při vývoji, při používání frameworku EF Core, při linq nebo lambda výrazech, nemůžeme přímo zobrazit SQL příkazy, což je pro nás nepohodlné při řešení problémů nebo optimalizaci výkonu.
Tento článek používá EF Core 5 jako příkladpro zobrazení SQL příkazů generovaných výstupním EF.
Nejprve vytvořte novou tovární proměnnou consolelogger ve startovacím souboru s proměnnou "ConsoleLoggerFactory" a generovaný SQL příkaz bude výstupem do konzole, kód je následující:
Přidejte výstup logu do metody ConfigureServices konfigurací kódu DbContext následovně:
Spusťte projekt a podívejte se na výstup z konzole následovně:
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Proveden DbCommand (1ms) [Parametry=[], Type='Text', Timeout='30'] VYBERTE [a]. [Id], [a]. [Disabled], [a]. [Odkaz], [a]. [Jméno], [a]. [PinYin], [a]. [Pozice], [a]. [_CreateTime], [a]. [_CreateTimeStamp], [a]. [_UpdateTime], [a]. [_UpdateTimeStamp] Z [Oblast] JAKO [a]
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Proveden DbCommand (19ms) [Parametry=[p0='?' (Velikost = 4000)], CommandType='Text', CommandTimeout='30'] VYBER * Z oblasti KDE pinYin = @p0
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Proveden DbCommand (1ms) [Parametry=[], Type='Text', Timeout='30'] VYBRAT * Z oblasti
Pokud SQL příkaz s podmínkou kde může zobrazit pouze parametrizované proměnné, nikoli konkrétní předané hodnoty, přidá se následující konfigurace:
Umožnit zahrnutí dat aplikací do zpráv o výjimkách, logů a dalších míst.
To může zahrnovat hodnoty přiřazené vlastnostem instance entity,
hodnoty parametrů příkazů odeslaných do databáze a další podobná data.
Tato vlajka by měla být aktivována pouze v případě bezpečnostních opatření
Na základě citlivosti těchto dat.
Všimněte si, jestli žádost prochází
Zavolejte generátor Microsoft.EntityFrameworkCore.DbContextOptions.UseInternalServiceProvider(system. IServiceProvider),
Tato možnost musí být pak nakonfigurována stejným způsobem pro veškeré využití daného poskytovatele služby.
Zvažte, že nevoláte Microsoft.EntityFrameworkCore.DbContextOptionsGenerator.UseInternalServiceProvider(system. IServiceProvider)
EF proto spravuje poskytovatele služeb a může podle potřeby vytvářet nové instance
Kompletní sestava je následující:
Vizualizace jsou následující:
Samozřejmě, výše uvedená nastavení lze také nastavit přepsáním metody OnConfiguring v DbContext (což není doporučeno):
(Konec)
|