En développement, en utilisant le framework EF Core, en utilisant des expressions linq ou lambda, nous ne pouvons pas visualiser directement les instructions SQL, ce qui est gênant pour nous pour dépanner ou optimiser les performances.
Cet article utilise EF Core 5 comme exemplepour consulter les instructions SQL générées par l’EF de sortie.
D’abord, créez une nouvelle variable d’usine consolelogger dans le fichier de démarrage avec la variable « ConsoleLoggerFactory », et l’instruction sql générée sera envoyée à la console, le code est le suivant :
Ajoutez la sortie logarithmique à la méthode ConfigureServices en configurant le code DbContext comme suit :
Démarrez le projet et voyez la sortie console comme suit :
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Exécuté DbCommand (1ms) [Paramètres=[], CommandType='Text', CommandTimeout='30'] SELECT [a]. [Id], [a]. [Handicapé], [a]. [Lien], [a]. [Nom], [a]. [PinYin], [a]. [Position], [a]. [_CreateTime], [a]. [_CreateTimeStamp], [a]. [_UpdateTime], [a]. [_UpdateTimeStamp] DEPUIS [Zone] EN TANT [A]
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Exécuté DbCommand (19ms) [Paramètres=[p0=' ?' (Taille = 4000)], TypeCommand='Text', CommandTimeout='30'] SELECT * FROM Area OÙ pinYin = @p0
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Exécuté DbCommand (1ms) [Paramètres=[], CommandType='Text', CommandTimeout='30'] SELECT * FROM Zone
Si l’instruction SQL avec la condition where ne peut voir que les variables paramétrées, et non les valeurs spécifiques passées, la configuration suivante est ajoutée :
Permettre l’inclusion des données d’application dans les messages d’exception, les journaux, et plus encore.
Cela peut inclure les valeurs attribuées aux propriétés d’instance d’entité,
les valeurs des paramètres des commandes envoyées à la base de données, ainsi que d’autres données similaires.
Ce drapeau ne doit être activé que si des mesures de sécurité sont en place
En fonction de la sensibilité de ces données.
Notez si la candidature est en cours
Appelez le générateur Microsoft.EntityFrameworkCore.DbContextOptions.UseInternalServiceProvider(system. IServiceProvider),
Cette option doit alors être configurée de la même manière pour toute utilisation de ce fournisseur de services.
Envisagez de ne pas appeler Microsoft.EntityFrameworkCore.DbContextOptionsGenerator.UseInternalServiceProvider(system). IServiceProvider)
EF gérera donc le fournisseur de services et pourra créer de nouvelles instances selon les besoins
La configuration complète est la suivante :
Les rendus sont les suivants :
Bien sûr, les réglages ci-dessus peuvent aussi être configurés en supplantant la méthode OnConfiguring du DbContext (non recommandée) :
(Fin)
|