In ontwikkeling, bij het gebruik van het EF core-framework, bij het gebruik van linq- of lambda-expressies, kunnen we de SQL-statements niet direct bekijken, wat onhandig is om de prestaties te onderzoeken of te optimaliseren.
Dit artikel gebruikt EF Core 5 als voorbeeldom de SQL-instructies te bekijken die door de uitvoer EF worden gegenereerd.
Maak eerst een nieuwe consolelogger factory-variabele aan in het opstartbestand met de variabele "ConsoleLoggerFactory", en de gegenereerde sql-instructie wordt naar de console gestuurd; de code is als volgt:
Voeg loguitvoer toe aan de ConfigureServices-methode door de DbContext-code als volgt te configureren:
Start het project en bekijk de console-output als volgt:
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Uitgevoerde DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] SELECTEER [a]. [Id], [a]. [Uitgeschakeld], [a]. [Link], [a]. [Naam], [a]. [PinYin], [a]. [Positie], [a]. [_CreateTime], [a]. [_CreateTimeStamp], [a]. [_UpdateTime], [a]. [_UpdateTimeStamp] VAN [Gebied] ALS [a]
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Uitgevoerde DbCommand (19ms) [Parameters=[p0='?' (Grootte = 4000)], CommandType='Text', CommandTimeout='30'] SELECTEER * UIT Gebied WAAR pinYin = @p0
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Uitgevoerde DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] SELECTEER * UIT Gebied
Als de SQL-instructie met de where-voorwaarde alleen de geparametriseerde variabelen kan zien, niet de specifieke doorgegeven waarden, wordt de volgende configuratie toegevoegd:
Schakel applicatiegegevens in om te worden opgenomen in uitzonderingsberichten, logboeken en meer.
Dit kan waarden omvatten die zijn toegewezen aan entiteitsinstantie-eigenschappen,
parameterwaarden van commando's die naar de database worden gestuurd, en andere dergelijke gegevens.
Deze vlag mag alleen worden ingeschakeld als er veiligheidsmaatregelen zijn genomen
Gebaseerd op de gevoeligheid van deze gegevens.
Let op of de aanvraag wordt goedgekeurd
Roep de Microsoft.EntityFrameworkCore.DbContextOptions generator aan.UseInternalServiceProvider(system. IServiceProvider),
Deze optie moet vervolgens op dezelfde manier worden geconfigureerd voor al het gebruik van die dienstverlener.
Overweeg om Microsoft.EntityFrameworkCore.DbContextOptionsGenerator.UseInternalServiceProvider(system. IServiceProvider)
EF zal daarom de serviceprovider beheren en kan nieuwe instanties aanmaken indien nodig
De volledige opstelling is als volgt:
De renderings zijn als volgt:
Natuurlijk kunnen bovenstaande instellingen ook worden geconfigureerd door de OnConfiging-methode van de DbContext te overschrijven (niet aanbevolen):
(Einde)
|