SQL Server Profiler用来跟踪应用程序发送到SQL Server中的SQL语句,用于检测性能,查找问题。Entity Framework 也有它的跟踪工具EFProf,用于跟踪Entity Framework发送到SQL Server中的SQL语句。
首先在代码中添加对程序集HibernatingRhinos.Profiler.Appender
的引用,并添加如下方法
HibernatingRhinos.Profiler.Appender.EntityFramework.EntityFrameworkProfiler.Initialize();
再打开EFProf程序,即可看到基于Entity Framework的程序向SQL Server发送的SQL语句
执行计划 Query Plan
EFProf可以以图形化的方式查看SQL语句的执行计划,而不必去SQL Server中查看执行计划
查询执行 Query Execute
如果你想知道查询的结果,可以直接在EFProf中打开查询语句,执行查询。这一个特性能查找数据特别有用。
获取Entity Framework生成的T-SQL语句
实体框架内建了机制来跟踪它生成的SQL语句,请参考下面的代码
using(var db = new SqlEntities())
{ var Q = db.Sql.Select(cc => cc.id); return ((ObjectQuery)Q).ToTraceString();
}
这样可以输入实体框架生成的SQL语句。
如何截获Entity Framework的调用
Entity Framework的社区项目EFTraceingProvider,可提供对Entity Framework调用的跟踪。