Kuriant, naudojant ef core sistemą, naudojant linq arba lambda išraiškas, negalime tiesiogiai peržiūrėti sql sakinių, o tai mums nepatogu šalinti triktis ar optimizuoti našumą.
Šiame straipsnyje kaip pavyzdys naudojamas EF Core 5, kad peržiūrėtumėte išvesties EF sugeneruotus SQL sakinius.
Pirmiausia paleisties faile sukurkite naują "consolelogger" gamyklinį kintamąjį su kintamuoju "ConsoleLoggerFactory", o sugeneruotas sql sakinys bus išvestas į konsolę, kodas yra toks:
Įtraukite žurnalo išvestį į metodą ConfigureServices konfigūruodami DbContext kodą taip:
Pradėkite projektą ir pamatykite konsolės išvestį taip:
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Įvykdyta DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] PASIRINKITE [a]. [Id], [a]. [Išjungta], [a]. [Nuoroda], [a]. [Vardas], [a]. [PinYin], [a]. [Padėtis], [a]. [_CreateTime], [a]. [_CreateTimeStamp], [a]. [_UpdateTime], [a]. [_UpdateTimeStamp] FROM [Area] AS [a]
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Įvykdyta DbCommand (19ms) [Parameters=[p0='?' (Dydis = 4000)], CommandType='Tekstas', CommandTimeout='30'] SELECT * FROM Sritis KUR pinYin = @p0
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Įvykdyta DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] PASIRINKITE * IŠ srities
Jei SQL sakinys su sąlyga where gali peržiūrėti tik parametrizuotus kintamuosius, o ne konkrečias perduotas reikšmes, pridedama ši konfigūracija:
Įgalinkite programos duomenis įtraukti į išimčių pranešimus, žurnalus ir kt.
Tai gali apimti objekto egzemplioriaus ypatybėms priskirtas reikšmes,
į duomenų bazę siunčiamų komandų parametrų reikšmės ir kiti panašūs duomenys.
Ši žyma turėtų būti įjungta tik tuo atveju, jei taikomos saugos priemonės
Remiantis šių duomenų jautrumu.
Atkreipkite dėmesį, jei programa vykdoma
Iškvieskite Microsoft.EntityFrameworkCore.DbContextOptions generator.UseInternalServiceProvider(system. IServiceProvider),
Tada ši parinktis turi būti sukonfigūruota vienodai visam to paslaugų teikėjo naudojimui.
Apsvarstykite galimybę neiškviesti Microsoft.EntityFrameworkCore.DbContextOptionsGenerator.UseInternalServiceProvider(system. IServiceProvider)
Todėl EF valdys paslaugų teikėją ir prireikus galės kurti naujus egzempliorius
Visa sąranka yra tokia:
Atvaizdai yra tokie:
Žinoma, aukščiau pateiktus nustatymus taip pat galima sukonfigūruoti nepaisydami DbContext metodo OnConfiguring (nerekomenduojama):
(Pabaiga)
|