Izstrādē, izmantojot ef core ietvaru, izmantojot linq vai lambda izteiksmes, mēs nevaram tieši apskatīt sql paziņojumus, kas mums ir neērti, lai novērstu vai optimizētu veiktspēju.
Šajā rakstā kā piemērs izmantots EF Core 5, lai skatītu SQL priekšrakstus, ko ģenerē izvade EF.
Pirmkārt, startēšanas failā izveidojiet jaunu consolelogger rūpnīcas mainīgo ar mainīgo "ConsoleLoggerFactory", un ģenerētais sql paziņojums tiks izvadīts konsolē, kods ir šāds:
Pievienojiet žurnāla izvadi metodei ConfigureServices, konfigurējot DbContext kodu šādi:
Sāciet projektu un skatiet konsoles izvadi šādi:
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Izpildīta DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] ATLASIET [a]. [Id], [a]. [Atspējots], [a]. [Saite], [a]. [Vārds], [a]. [PinYin], [a]. [Amats], [a]. [_CreateTime], [a]. [_CreateTimeStamp], [a]. [_UpdateTime], [a]. [_UpdateTimeStamp] NO [Apgabals] AS [a]
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Izpildīta DbCommand (19ms) [Parameters=[p0='?' (Izmērs = 4000)], CommandType='Teksts', CommandTimeout='30'] SELECT * FROM Apgabals KUR pinYin = @p0
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Izpildīta DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] SELECT * FROM Area
Ja SQL priekšraksts ar nosacījumu where var skatīt tikai parametrizētos mainīgos, nevis konkrētās nodotās vērtības, tiek pievienota šāda konfigurācija:
Iespējojiet lietojumprogrammu datu iekļaušanu izņēmuma ziņojumos, žurnālos un citos gadījumos.
Tas var ietvert vērtības, kas piešķirtas entītijas instances rekvizītiem,
datu bāzē nosūtīto komandu parametru vērtības un citi šādi dati.
Šo karodziņu vajadzētu iespējot tikai tad, ja ir ieviesti drošības pasākumi
Pamatojoties uz šo datu jutīgumu.
Ņemiet vērā, ja pieteikums tiek izskatīts
Izsauciet Microsoft.EntityFrameworkCore.DbContextOptions generator.UseInternalServiceProvider(system. IServiceProvider),
Pēc tam šī opcija ir jākonfigurē vienādi visiem šī pakalpojumu sniedzēja lietojumiem.
Apsveriet iespēju neizsaukt Microsoft.EntityFrameworkCore.DbContextOptionsGenerator.UseInternalServiceProvider(system. IServiceProvider)
Tāpēc EF pārvaldīs pakalpojumu sniedzēju un pēc vajadzības var izveidot jaunas instances
Pilna iestatīšana ir šāda:
Atveidojumi ir šādi:
Protams, iepriekš minētos iestatījumus var konfigurēt arī, ignorējot DbContext metodi OnConfiguring (nav ieteicams):
(Beigas)
|