zoukankan      html  css  js  c++  java
  • 监听Entity Framework生成的Sql语句

               Entity Framework为我们提供了很大的方便,但有时候,我们想看看EF生成的Sql语句到底是怎样的,一种方式是我们可以启用Sql Server Profer工具。今天介绍另外一种方式,非常简单,可以监听EF执行的每条Sql语句,而且也可以自定义在执行语句前,执行语句完成后的动作。通过这种方式也可以非常方便的去监听系统的运行日志。

               完成这个功能,需要引入二个第三方的组件,分别是Clutch.dll和Clutch.Diagnostics.EntityFramework.dll(网上可以下载到)。引入之后,只需要实现IDbTracingListener接口:

    public class TestListener : IDbTracingListener
    {
        public void CommandExecuted(DbTracingContext context)
        {
            Debug.WriteLine(context.Command.CommandText);
        }
     
        public void CommandExecuting(DbTracingContext context)
        {
            //throw new NotImplementedException();
        }
     
        public void CommandFailed(DbTracingContext context)
        {
            //throw new NotImplementedException();
        }
     
        public void CommandFinished(DbTracingContext context)
        {
            //throw new NotImplementedException();
        }
     
        public void ReaderFinished(DbTracingContext context)
        {
            //throw new NotImplementedException();
        }
    }

             接口中的几个方法,分别是Sql语句执行前,执行完成后等要执行的方法,你可以在这个方法里面做任何事.更关键的是它的参数DbTracingContext里面有你想要的一切,包括生成的Sql语句.

             把这个接口实现后,你只需要在Context里面加上监听即可.

    DbTracing.Enable();
    DbTracing.AddListener(new TestListener());

            后面你执行的所有Sql语句,都可以在这里面看到.

  • 相关阅读:
    C知识(#一些笔记)
    我整理的Python规则(2)
    我整理的Python代码规则
    教你如何通俗易懂的了解深度学习知识
    c#中委托和事件(续)(转)
    c#中的委托和事件(转)
    .Net neatupload上传控件实现文件上传的进度条
    C#常用日期格式处理转换[C#日期格式转换大全
    C#string常用函数总结
    数据库08版本如何移动到05的数据中
  • 原文地址:https://www.cnblogs.com/xiaoxiangfeizi/p/3551927.html
Copyright © 2011-2022 走看看