很长的请求时间VS2010

时间:2012-02-24 13:43:13

标签: c# asp.net .net visual-studio

我在小型Web应用程序中从Visual Studio 2010中的SQLdb获取一些数据。当我尝试显示此内容时,使用简单的下拉列表,在编译后第一次需要大约15秒,然后在5秒后每一个要求。我使用LINQ连接到db和转发器来打印所有内容。这是四列和大约50行,所以不是mutch数据。如果我尝试采用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();

任何人都知道什么可以采取som mutch时间?

此致 丹尼尔

我尝试过另一种方法:

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();

它需要同样长的时间......除了代码之外,还有一些其他更基本的问题需要调用db我认为吗?

更多信息: 我做了som跟踪,这是第一次加载页面:

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发生了什么?

2 个答案:

答案 0 :(得分:1)

获取LINQ生成的实际SQL,将其复制粘贴到数据库管理工具中,并查看执行计划以确定潜在的性能问题。

您可以使用数据上下文的Log属性来查看实际的SQL。在控制台应用程序中,您可以执行以下操作:

dbContext.Log = Console.Out;
// ...

或者,将SQL写入文件,如下所示:

using (var writer = new StreamWriter("sql.log")) {
    dbContext.Log = writer;
    // ....
}

此外,可能值得在LINQ表达式的末尾添加ToList()ToArray(),以确保它不会被无意中重新执行。

答案 1 :(得分:0)

我不知道我做了什么让它工作..只是继续做代码中的其他地方的东西和更新最新的Windows更新..嗯..现在它的工作就像一个魅力,必须是VS2010中的一个错误?? 感谢所有的建议,学到了一些很棒的东西!

此致