由Entity Framework DbContext执行的日志查询
我在MVC 5项目中使用EF 6.0和LINQ。 我想记录Entity Framework DbContext执行的所有SQL查询,以进行调试/性能测量。
在Java / Hibernate中,可以通过设置属性hibernate.show_sql=true
来实现等效行为。 是否有可能在entity framework中有类似的行为?
MSDN上的日志记录和拦截数据库操作文章正是您所需要的。
对于采用字符串的任何方法,可以将DbContext.Database.Log
属性设置为委托。 最常见的是,它通过将其设置为TextWriter
的“Write”方法与任何TextWriter
一起使用。 当前上下文生成的所有SQL都将记录到该编写器。 例如,以下代码将SQL记录到控制台:
using (var context = new BlogContext()) { context.Database.Log = Console.Write; // Your code here... }
您只能在调试模式下使用此行仅记录到“输出”窗口而不是控制台窗口。
public class YourContext : DbContext { public YourContext() { Database.Log = sql => Debug.Write(sql); } }