Kehityksessä, kun käytetään ef core frameworkia, linq- tai lambda-lausekkeita, emme voi suoraan nähdä sql-lauseita, mikä on hankalaa vianetsinnästä tai suorituskyvyn optimoinnista.
Tässä artikkelissa käytetään esimerkkinä EF Core 5nähdäkseen EF:n tuottamat SQL-lauseet.
Luo ensin uusi consoleloggerin tehdasmuuttuja käynnistystiedostoon muuttujalla "ConsoleLoggerFactory", ja generoitu sql-lause lähetetään konsolille, koodi on seuraava:
Lisää lokitulostus ConfigureServices-metodiin konfiguroimalla DbContext-koodi seuraavasti:
Aloita projekti ja näe konsolin tulos seuraavasti:
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Suoritettu DbCommand (1ms) [parametrit=[], CommandType='Teksti', CommandTimeout='30'] VALITSE [a]. [Id], [a]. [Vammainen], [a]. [Linkki], [a]. [Nimi], [a]. [PinYin], [a]. [Asento], [a]. [_CreateTime], [a]. [_CreateTimeStamp], [a]. [_UpdateTime], [a]. [_UpdateTimeStamp] ALUEELTA [alue] AS [a]
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Suoritettu DbCommand (19ms) [parametrit=[p0='?' (koko = 4000)], CommandType='Teksti', CommandTimeout='30'] VALITSE * ALUEESTA MISSÄ pinYin = @p0
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Suoritettu DbCommand (1ms) [parametrit=[], CommandType='Teksti', CommandTimeout='30'] VALITSE * ALUEELTA
Jos SQL-lause where-ehdolla voi nähdä vain parametrisoidut muuttujat, ei välitetyt arvot, lisätään seuraava konfiguraatio:
Salli sovellustietojen sisällyttäminen poikkeusviesteihin, lokeihin ja muuhun.
Tämä voi sisältää arvoja, jotka on annettu entiteettiinstanssin ominaisuuksille,
tietokannalle lähetettyjen komentojen parametriarvot sekä muut vastaavat tiedot.
Tämä lippu tulisi ottaa käyttöön vain, jos turvallisuustoimia on käytössä
Perustuen tämän datan herkkyyteen.
Huomaa, jos hakemus on käynnissä
Kutsu Microsoft.EntityFrameworkCore.DbContextOptions generator.UseInternalServiceProvider(system. IServiceProvider),
Tämä vaihtoehto on konfiguroitava samalla tavalla kaikissa kyseisen palveluntarjoajan käytössä.
Harkitse, ettet kutsu Microsoft.EntityFrameworkCore.DbContextOptionsGenerator.UseInternalServiceProvider(system. IServiceProvider)
EF hallinnoi siis palveluntarjoajaa ja voi luoda uusia instansseja tarpeen mukaan
Koko asetelma on seuraava:
Renderöinnit ovat seuraavat:
Tietenkin yllä olevat asetukset voidaan määrittää myös ohittamalla DbContextin OnConfiguring-menetelmä (ei suositeltavaa):
(Loppu)
|