VS2010请求时间很长
本文关键字:时间 请求 VS2010 | 更新日期: 2023-09-27 18:25:45
我有一个小型web应用程序,它从Visual Studio 2010中的SQLdb中获取一些数据。当我尝试显示这一点时,使用一个简单的dropdownlist,第一次编译后大约需要15秒,然后每次请求需要5秒。我使用LINQ连接数据库和中继器来打印所有内容。它有四列,大约50行,所以数据不那么混杂。如果我试着排10排也没关系,同样的响应时间。
我们在另一台安装了VS2008的计算机上测试了同样的东西,时间大约是0.1秒左右。我使用.NET 3.5,并且已经安装了所有最新的更新(SP1等)。
如果我查看跟踪,我会发现代码中的这些行需要时间:
var cust = dbContext.Customers
.Select(c => new
{
c.customerID,
c.Email
}).Take(10);
repeater.DataSource = cust;
repeater.DataBind();
有人知道是什么在消磨时间吗?
问候Daniel
我尝试过另一种方法:
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = connection;
cmd.CommandType = CommandType.Text; //default
cmd.CommandText = "SELECT Email FROM Customer";
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
它只需要同样长的时间。。我想,除了调用数据库的代码之外,肯定还有其他更根本的问题吗?
更多信息:我做了一些跟踪,这是第一次加载页面:
Begin Raise ChangedEvents 0,00219604937555932 0,000014
After repeater has printed 15,8138335259613 15,811637
End Raise ChangedEvents 15,8138801733289 0,000047
第二次:
Begin Raise ChangedEvents 0,00219604937555932 0,000014
After repeater has printed 5,25090396258066 5,248825
End Raise ChangedEvents 25095106283536 0,000047
ChangeEvents发生了什么?
获取LINQ生成的实际SQL,将其复制粘贴到数据库管理工具中,并查看执行计划以确定潜在的性能问题。
您可以使用数据上下文的Log属性来查看实际的SQL。在控制台应用程序中,您可以执行以下操作:
dbContext.Log = Console.Out;
// ...
或者,将SQL写入如下文件:
using (var writer = new StreamWriter("sql.log")) {
dbContext.Log = writer;
// ....
}
此外,可能值得在LINQ表达式的末尾添加ToList()
或ToArray()
,以确保它不会被无意中重新执行。
我不知道我做了什么让它工作。。只是在代码的其他地方继续做一些事情,并更新了最新的windows更新。。嗯。现在它像一个符咒一样工作,一定是VS2010中的一个bug??不过,感谢所有的建议,学到了一些很棒的东西!
问候