我有一个使用Entity Framework查询SQL Server数据库的Web应用程序。我希望能够以编程方式了解在数据库上执行了多少次查询(往返)。我们的想法是记录这些信息,以便轻松检测出未包含关系并导致大量往返的错误。
有没有办法实现这个目标?我不介意该解决方案是否特定于SQL Server。
注意:我想以编程方式监控数据库,因此SQL Server Profiler等工具对我没用。我希望能够在请求结束时以及处理请求的代码中知道该请求执行了多少查询。
答案 0 :(得分:2)
根据Craig Stuntz的建议,这是我的最终解决方案。
using(var database = new MyEntities())
{
SqlConnection sqlConnection = null;
var entityConnection = _database.Connection as EntityConnection;
if (entityConnection != null)
{
sqlConnection = entityConnection.StoreConnection as SqlConnection;
// Enable statistics
sqlConnection.StatisticsEnabled = true;
}
// Access the database
if (sqlConnection != null)
{
var statistics = sqlConnection.RetrieveStatistics();
var selectCount = (long)statistics["SelectCount"];
// Do something with the statistics
}
}
答案 1 :(得分:1)
也许使用EFProf?
答案 2 :(得分:1)
有几点想法:
答案 3 :(得分:1)
您可以使用SQL连接的provider statistics feature。
答案 4 :(得分:0)
我使用SQL Server 2008 Profiler以艰难的方式完成了这项工作,如果您在探查器中设置了正确的过滤器,您将只看到EF的调用。