0

我刚刚写了一个我认为非常简单的查询:

public IList<Departement> GetDepartements()  
{
    IQueryable<MyContext> queryBase = QueryBase();

    IQueryable<Departement> query = 
        (from x in queryBase
         group x by x.Geographies.DepartementCode
         into grp
         select new Departement
             {
                 code = grp.Key,
                 numberOfDistributors =
                     grp.Select(x=> x.Distributors.Distributeur_PK)
                        .Count(),
                 numberOfLeads =
                     grp.Select(x=> x.Leads.DemandeWeb_FK).Count()
             }
        );
    return query.ToList();
}

不幸的是,我收到连接超时错误。

我不想更改 DataContext.CommandTimeout 属性,因为我觉得这样一个简单的查询没有必要。

知道为什么我会收到此错误吗?

4

1 回答 1

3

启动 SQL Profiler 并捕获发送的 sql 命令。
然后在 SQL Management Studio 中手动执行命令,然后可以看到执行它需要多长时间。它可能会比您当前的 CommandTimeout 运行更长的时间。

在此之后,您有两个选择:

  • 要么增加 CommandTimeout
  • 提出另一种解决方案,逐部分检索数据或提高查询本身的整体性能(索引、结构)
于 2013-07-10T09:07:48.913 回答