ADO.NET Entity Framework CodeFirst 如何输出日志(EF 5.0)

ADO.NET Entity Framework CodeFirst 如何输出日志(EF4.3) 用的EFProviderWrappers ,这个组件好久没有更新了,对于SQL执行日志的解决方案的需求是杠杠的,今天给大家介绍一个更好的组件Clutch.Diagnostics.EntityFramework,可以通过Nuget 获取:

image

这个框架定义了一个接口 IDbTracingListener:

namespace Clutch.Diagnostics.EntityFramework

{



  public interface IDbTracingListener

  {



    void CommandExecuting(DbTracingContext context);



    void CommandFinished(DbTracingContext context);



    void ReaderFinished(DbTracingContext context);



    void CommandFailed(DbTracingContext context);



    void CommandExecuted(DbTracingContext context);



  }

}

实现这个接口,添加一个类,里面实现自己的SQL 日志记录:
using System;

using System.Data.Common;

using System.Diagnostics;

using Clutch.Diagnostics.EntityFramework;



/// <summary>

/// Implementation of IDbTracingListener Class is used for tracing all SQL Queries to the entity framework database

/// </summary>

public class DbTracingListener : IDbTracingListener

{

    public void CommandExecuted(DbConnection connection, DbCommand command, object result, TimeSpan duration)

    {

        Debug.WriteLine(command.CommandText);

        Debug.WriteLine(string.Format("Executed in: {0}", duration));

    }



    public void CommandExecuting(DbConnection connection, DbCommand command)

    {



    }



    public void CommandFailed(DbConnection connection, DbCommand command, Exception exception, TimeSpan duration)

    {



    }



    public void CommandFinished(DbConnection connection, DbCommand command, object result, TimeSpan duration)

    {



    }

}

在方法内部通过 context.Command.CommandText 可以获得你的ef的sql命令的内容。

然后在程序的入口启用SQL日志输出实现:

// Enable Tracing queries

DbTracing.Enable();

// Adding the listener (implementation of IDbTracingListener)

DbTracing.AddListener(new DbTracingListener());

你可能感兴趣的:(framework)