Fejlesztés során, az ef core keretrendszert, linq vagy lambda kifejezéseket használva nem tudjuk közvetlenül megtekinteni a SQL utasításokat, ami kényelmetlen számunkra a hibakeresés vagy teljesítmény optimalizálása szempontjából.
Ez a cikk példaként az EF Core 5-öt használjahogy megtekintsék az EF output által generált SQL utasításokat.
Először hozz létre egy új consolelogger gyári változót az indító fájlban a "ConsoleLoggerFactory" változóval, és a generált sql utasítás a konzolnak fog kiadni, a kód a következő:
A napló kimenetet hozzáadjuk a ConfigureServices metódushoz a DbContext kód konfigurálásával az alábbiakkal:
Indítsd el a projektet, és nézd meg a konzol kimenetét a következőként:
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Végrehajtott DbCommand (1ms) [paraméter=[], CommandType='Text', CommandTimeout='30'] SELECT [a]. [Id], [a]. [Mozgáskorlátozott], [a]. [Link], [a]. [Név], [a]. [PinYin], [a]. [Pozíció], [a]. [_CreateTime], [a]. [_CreateTimeStamp], [a]. [_UpdateTime], [a]. [_UpdateTimeStamp] TERÜLETRŐL [Területről] AS [a]
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Végrehajtott DbCommand (19ms) [Parameters=[p0='?' (méret = 4000)], CommandType='Text', CommandTimeout='30'] SELECT * FROM Terület, AHOL pinYin = @p0
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Végrehajtott DbCommand (1ms) [paraméter=[], CommandType='Text', CommandTimeout='30'] SELECT * FROM Area
Ha az SQL utasítás a where feltétellel csak a paraméterezett változókat tudja megnézni, nem pedig a megadott konkrét értékeket, akkor a következő konfigurációt adjuk hozzá:
Engedélyezzük, hogy az alkalmazás adatai kivételes üzenetekbe, naplókba és egyéb anyagokba kerüljenek be.
Ez magában foglalhatja az entitás példány tulajdonságaihoz rendelt értékeket,
az adatbázisba küldött parancsok paraméterértékei és egyéb hasonló adatok.
Ez a zászló csak akkor engedélyezhető, ha biztonsági intézkedések vannak beépítve
Az adatok érzékenysége alapján.
Figyeld meg, hogy az alkalmazás átmegy-e
Hívjuk a Microsoft.EntityFrameworkCore.DbContextOptions generator.UseInternalServiceProvider(system. IServiceProvider),
Ezt az opciót ugyanúgy kell konfigurálni minden szolgáltató használatához.
Fontold meg, hogy ne hívjuk a Microsoft.EntityFrameworkCore.DbContextOptionsGenerator.UseInternalServiceProvider(system. IServiceProvider)
Az EF így kezeli a szolgáltatót, és szükség esetén új példányokat hozhat létre
A teljes felállás a következő:
A képek a következők:
Természetesen a fenti beállítások konfigurálhatók a DbContext OnConfiguring módszerének felülírásával is (nem ajánlott):
(Vége)
|