In der Entwicklung können wir beim Einsatz des EF-Core-Frameworks sowie bei der Verwendung von linq- oder lambda-Ausdrücken die SQL-Anweisungen nicht direkt ansehen, was für uns unpraktisch ist, um Fehler zu beheben oder die Performance zu optimieren.
Dieser Artikel verwendet EF Core 5 als Beispielum die SQL-Anweisungen, die durch die Ausgabe EF generiert werden, anzuzeigen.
Zuerst erstelle eine neue ConsoleLogger Factory-Variable in der Startdatei mit der Variable "ConsoleLoggerFactory", und die generierte SQL-Anweisung wird an die Konsole ausgegeben; der Code ist wie folgt:
Fügen Sie die Logausgabe der ConfigureServices-Methode hinzu, indem Sie den DbContext-Code wie folgt konfigurieren:
Starte das Projekt und sieh die Konsolenausgabe wie folgt:
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Ausgeführt DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] SELECT [a]. [Id], [a]. [Deaktiviert], [a]. [Link], [a]. [Name], [a]. [PinYin], [a]. [Position], [a]. [_CreateTime], [a]. [_CreateTimeStamp], [a]. [_UpdateTime], [a]. [_UpdateTimeStamp] VON [Gebiet] AS [a]
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Ausgeführt DbCommand (19ms) [Parameter=[p0='?' (Größe = 4000)], CommandType='Text', CommandTimeout='30'] AUSWÄHLEN * AUS Bereich WO pinYin = @p0
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Ausgeführt DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] AUSWÄHLEN * AUS Gebiet
Wenn die SQL-Anweisung mit der where-Bedingung nur die parametrisierten Variablen anzeigen kann, nicht die spezifischen übermittelten Werte, wird folgende Konfiguration hinzugefügt:
Ermöglichen Sie die Einbindung von Anwendungsdaten in Ausnahmemeldungen, Protokolle und mehr.
Dies kann Werte umfassen, die den Eigenschaften der Entitätsinstanzen zugewiesen werden,
Parameterwerte der an die Datenbank gesendeten Befehle und andere solche Daten.
Diese Flagge sollte nur aktiviert werden, wenn Sicherheitsmaßnahmen vorhanden sind
Basierend auf der Sensibilität dieser Daten.
Beachten Sie, ob der Antrag durchgeht.
Ruf den Microsoft.EntityFrameworkCore.DbContextOptions generator.UseInternalServiceProvider(system. IServiceProvider),
Diese Option muss dann für alle Nutzung dieses Dienstleisters auf die gleiche Weise konfiguriert werden.
Überlegen Sie, Microsoft.EntityFrameworkCore.DbContextOptionsGenerator.UseInternalServiceProvider(system. IServiceProvider)
EF verwaltet daher den Dienstanbieter und kann bei Bedarf neue Instanzen erstellen
Das vollständige Setup ist wie folgt:
Die Darstellungen sind wie folgt:
Natürlich können die oben genannten Einstellungen auch durch das Überschreiben der OnConfiging-Methode des DbContext konfiguriert werden (nicht empfohlen):
(Ende)
|