使用ADO.NET实体数据模型定时Sql查询

时间:2016-06-15 10:26:04

标签: c# asp.net sql-server entity-framework

Asp.net MVC Web应用程序中的.NET实体数据模型。数据库在Azure中。我试图用这样的Sql查询计算查询的任何一侧的开始和结束时间。

start = DateTime.Now;
var query = item.Database.SqlQuery<CustomerQuery>(queryString);
end = DateTime.Now;

我正在计算这样的时间

Duration = end.Subtract(start);

现在无论返回多少结果,有时成千上万的时间实际上是相同的。

这是为什么?有没有办法获得更准确的时间

3 个答案:

答案 0 :(得分:3)

好吧,我不是这个堆栈的专家,但似乎SqlQuery返回DbRawSqlQuery对象,它封装了查询,但没有执行它。正如MSDN所说“在枚举时将执行查询的DbRawSqlQuery对象。”

因此,您应该实现查询,例如通过调用ToList()

var query = item.Database.SqlQuery<CustomerQuery>(queryString).ToList();

答案 1 :(得分:0)

DateTime.Now方法不是计时毫秒的最佳方法,您可以在Jon here的答案中阅读更多相关内容。您应该使用可以像这样使用的Stopwatch类。

using System.Diagnostics;

方法

var sw = new Stopwatch();
sw.Start();
var query = item.Database.SqlQuery<CustomerQuery>(queryString);
sw.Stop();

var totalTime = sw.ElapsedMilliseconds;

答案 2 :(得分:0)

如果您使用的是Azure,则可能还可以使用Application Insights。您可以将应用程序配置为将信息发送到Azure。

https://azure.microsoft.com/en-gb/documentation/articles/sql-database-query-performance/ https://azure.microsoft.com/en-gb/documentation/articles/app-insights-asp-net/