【译】第39节---EF6-数据库命令日志
原文:http://www.entityframeworktutorial.net/entityframework6/database-command-logging.aspx
本节,我们学习如何记录Entity Framework发送到数据库的命令和查询。
在EF 6之前,我们使用数据库跟踪工具或第三方跟踪实用程序跟踪由Entity Framework发送的数据库查询和命令。 现在,EF 6提供了一个简单的机制来记录Entity Framework所做的一切。 它使用context.database.Log记录EF执行的所有活动。
可以附加任何类的任何方法,它接受一个字符串参数并返回void。
在下面的例子中,我们使用Console.Write方法记录EF活动:
using (var context = new SchoolDBEntities()) { context.Database.Log = Console.Write; var student = context.Students .Where(s => s.StudentName == "Student1").FirstOrDefault<Student>(); student.StudentName = "Edited Name"; context.SaveChanges(); }
输出如下:
可以在输出中看到它记录了EF执行的所有活动,例如,打开和关闭连接,执行和完成时间以及数据库查询和命令。
Context.Database.Log是一个Action <string>,所以可以附加一个具有一个字符串参数和void返回类型的方法。 例如:
public class Logger { public static void Log(string message) { Console.WriteLine("EF Message: {0} ", message); } } class EF6Demo { public static void DBCommandLogging() { using (var context = new SchoolDBEntities()) { context.Database.Log = Logger.Log; var student = context.Students .Where(s => s.StudentName == "Student1").FirstOrDefault<Student>(); student.StudentName = "Edited Name"; context.SaveChanges(); } } }