2013-07-10 125 views
0

我只寫了我認爲是一個非常簡單的查詢:的LINQ to SQL的GroupBy:連接超時

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屬性,因爲我覺得它不應該是這樣一個簡單的查詢所必需的。

任何想法,爲什麼我得到這個錯誤?

+0

檢查您的索引。 – NickD

回答

3

啓動一個SQL事件探查器並捕獲發送的sql命令。
然後在SQL Management Studio中手動執行命令,然後您可以看到執行該命令需要多長時間。它可能會比你當前的CommandTimeout運行時間更長。

此之後,你有兩個選擇:

  • 要麼增加的CommandTimeout
  • 提出了另一個解決方案,它通過部分檢索數據部分或增加查詢本身的整體性能(指標,結構化)
+0

謝謝,我會報告我的發現。 –