程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 如何使用EntityFramework 6.1的DbCommandInterceptor攔截生成的SQL語句

如何使用EntityFramework 6.1的DbCommandInterceptor攔截生成的SQL語句

編輯:關於.NET

開始

EF6.1也出來不少日子了,6.1相比6.0有個很大的特點就是新增了System.Data.Entity.Infrastructure.Interception 命名空間,此命名空間下的對象可以允許我們更加方便的了解到EF運行時的一些信息,當然我們最想看的還是EF生成的Sql語句,話不多講,開始干吧;

class EFIntercepterLogging : DbCommandInterceptor
{
private readonly Stopwatch _stopwatch = new Stopwatch();
public override void ScalarExecuting(System.Data.Common.DbCommand command, DbCommandInterceptionContext<object> interceptionContext)
{
base.ScalarExecuting(command, interceptionContext);
_stopwatch.Restart();
}
public override void ScalarExecuted(System.Data.Common.DbCommand command, DbCommandInterceptionContext<object> interceptionContext)
{
_stopwatch.Stop();
if (interceptionContext.Exception != null)
{
Trace.TraceError("Exception:{1} \r\n --> Error executing command: {0}", command.CommandText, interceptionContext.Exception.ToString());
}
else
{
Trace.TraceInformation("\r\n執行

從方法名我們可以看出大致就三類:讀取類的sql,[Reader],非讀取類的sql,[NonQuery],還有[Scalar],這類用的比較少,跟原始的ADO.NET命令類型基本一樣,不多講.每個sql語句類型的方法都有執行前Executing,執行後Executed,從命名上我們就可以看出AOP的身影哈,接下來看如何使用它...

查看本欄目

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved