Maison >base de données >tutoriel mysql >Comment enregistrer les instructions SQL générées par DbContext.SaveChanges() dans Entity Framework ?
Comment enregistrer le SQL généré à partir de DbContext.SaveChanges()
Dans Entity Framework (EF), vous pouvez facilement enregistrer les instructions SQL générées par votre méthode DbContext.SaveChanges(). Voici comment :
Utilisation de la propriété Database.Log :
Dans EF 6.0 et versions ultérieures, la classe Database a une classe Action
context.Database.Log = Console.WriteLine;
Utilisation d'intercepteurs :
Si vous avez besoin de fonctionnalités plus avancées capacités de journalisation, vous pouvez utiliser un intercepteur. Un intercepteur est une classe qui hérite de DbInterceptor et remplace ses différentes méthodes. L'une de ces méthodes est OnNonQueryExecuted, qui est appelée chaque fois qu'une instruction non-requête est exécutée (telle que SaveChanges()).
Dans la méthode OnNonQueryExecuted, vous pouvez accéder à l'instruction SQL qui a été exécutée et la consigner dans un fichier, base de données ou tout autre emplacement.
Exemple de code :
Voici un exemple d'un intercepteur qui enregistre les instructions SQL dans un fichier :
public class SqlLoggerInterceptor : DbInterceptor { private readonly TextWriter _logWriter; public SqlLoggerInterceptor(TextWriter logWriter) { _logWriter = logWriter; } public override void OnNonQueryExecuted(DbCommand command, DbCommandInterceptionContext interceptionContext) { _logWriter.WriteLine(command.CommandText); } }
Vous pouvez enregistrer l'intercepteur comme ceci :
Database.SetInitializer<MyContext>(null); Database.AddInterceptor(new SqlLoggerInterceptor(File.AppendText("log.txt")));
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!