Pri razvoju, ko uporabljamo ef core ogrodje, pri uporabi linq ali lambda izrazov, ne moremo neposredno videti SQL stavkov, kar je za nas neprijetno za odpravljanje težav ali optimizacijo zmogljivosti.
Ta članek uporablja EF Core 5 kot primerza ogled SQL stavkov, ki jih generira izhodni EF.
Najprej ustvarite novo spremenljivko consolelogger factory v zagonski datoteki s spremenljivko "ConsoleLoggerFactory", in generirana SQL izjava bo izpisana v konzolo, koda je naslednja:
Dodajte izhod dnevnika metodi ConfigureServices tako, da konfigurirate kodo DbContext na naslednji način:
Začni projekt in si oglej izhod iz konzole takole:
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Izveden DbCommand (1ms) [Parametri=[], CommandType='Text', CommandTimeout='30'] IZBERI [a]. [Id], [a]. [Onemogočen], [a]. [Povezava], [a]. [Ime], [a]. [PinYin], [a]. [Položaj], [a]. [_CreateTime], [a]. [_CreateTimeStamp], [a]. [_UpdateTime], [a]. [_UpdateTimeStamp] IZ [Območje] KOT [a]
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Izveden DbCommand (19ms) [Parametri=[p0='?' (Velikost = 4000)], CommandType='Text', CommandTimeout='30'] IZBERI * IZ območja, kjer pinYin = @p0
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Izveden DbCommand (1ms) [Parametri=[], CommandType='Text', CommandTimeout='30'] IZBERI * IZ območja
Če lahko SQL stavek s pogojem kjer vidi le parametrizirane spremenljivke, ne pa specifičnih prenesenih vrednosti, se doda naslednja konfiguracija:
Omogočite vključitev aplikacijskih podatkov v sporočila o izjemah, dnevnike in še več.
To lahko vključuje vrednosti, dodeljene lastnostim entitete,
vrednosti parametrov ukazov, poslanih v bazo podatkov, in druge podobne podatke.
To zastavo je treba aktivirati le, če obstajajo varnostni ukrepi
Na podlagi občutljivosti teh podatkov.
Opazite, če je vloga v postopku
Pokličite Microsoft.EntityFrameworkCore.DbContextOptions generator.UseInternalServiceProvider(system. IServiceProvider),
To možnost je nato treba konfigurirati na enak način za vse uporabe tega ponudnika storitev.
Razmislite, da ne kličete Microsoft.EntityFrameworkCore.DbContextOptionsGenerator.UseInternalServiceProvider(system. IServiceProvider)
EF tako upravlja ponudnika storitev in lahko po potrebi ustvari nove primere
Celotna postavitev je naslednja:
Upodobitve so naslednje:
Seveda je zgornje nastavitve mogoče konfigurirati tudi z preglasitvijo metode OnConfiguring v DbContext (kar ni priporočljivo):
(Konec)
|