当前位置:Gxlcms >
数据库问题 >
DbCommandInterceptor抓取EF执行时的SQL语句
DbCommandInterceptor抓取EF执行时的SQL语句
时间:2021-07-01 10:21:17
帮助过:35人阅读
<summary>
/// 抓取EF执行时的SQL语句
/// </summary>
public class EFIntercepterLogging : DbCommandInterceptor
{
private readonly Stopwatch _stopwatch =
new Stopwatch();
public override void ScalarExecuting(DbCommand command, DbCommandInterceptionContext<
object>
interceptionContext)
{
base.ScalarExecuting(command, interceptionContext);
_stopwatch.Restart();
}
public override void ScalarExecuted(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.WriteLine("线程:" +
System.Threading.Thread.CurrentThread.ManagedThreadId);
Trace.TraceInformation("\r\n执行时间:{0} 毫秒\r\n-->ScalarExecuted.Command:{1}\r\n", _stopwatch.ElapsedMilliseconds, command.CommandText);
}
base.ScalarExecuted(command, interceptionContext);
}
public override void NonQueryExecuting(DbCommand command, DbCommandInterceptionContext<
int>
interceptionContext)
{
base.NonQueryExecuting(command, interceptionContext);
_stopwatch.Restart();
}
public override void NonQueryExecuted(DbCommand command, DbCommandInterceptionContext<
int>
interceptionContext)
{
_stopwatch.Stop();
if (interceptionContext.Exception !=
null)
{
Trace.TraceError("Exception:{1} \r\n --> Error executing command:\r\n {0}", command.CommandText, interceptionContext.Exception.ToString());
}
else
{
Trace.TraceInformation("\r\n执行时间:{0} 毫秒\r\n-->NonQueryExecuted.Command:\r\n{1}", _stopwatch.ElapsedMilliseconds, command.CommandText);
}
base.NonQueryExecuted(command, interceptionContext);
}
public override void ReaderExecuting(DbCommand command, DbCommandInterceptionContext<DbDataReader>
interceptionContext)
{
//command.CommandText += " AND 1=1";
base.ReaderExecuting(command, interceptionContext);
_stopwatch.Restart();
}
public override void ReaderExecuted(DbCommand command, DbCommandInterceptionContext<DbDataReader>
interceptionContext)
{
_stopwatch.Stop();
if (interceptionContext.Exception !=
null)
{
Trace.TraceError("Exception:{1} \r\n --> Error executing command:\r\n {0}", command.CommandText, interceptionContext.Exception.ToString());
}
else
{
Trace.WriteLine("线程:" +
System.Threading.Thread.CurrentThread.ManagedThreadId);
Trace.TraceInformation("\r\n执行时间:{0} 毫秒 \r\n -->ReaderExecuted.Command:\r\n{1}", _stopwatch.ElapsedMilliseconds, command.CommandText);
}
base.ReaderExecuted(command, interceptionContext);
}
}
//EF监控
DbInterception.Add(new EFIntercepterLogging());
DbCommandInterceptor抓取EF执行时的SQL语句
标签:readonly for context and rest int 生成 div pre