2011-09-14 21 views
-1

所以,我有一個簡單的linq查詢。其他程序員(全部在Win7,VS2010上)都可以運行該選擇而沒有問題。我可以在我的機器上使用SQL Profiler命中服務器數據庫(我們都在開發服務器上使用相同的SQL Server 2008數據庫)並查看實際查詢在我的機器上SQL Server Mgmt studio中的工作情況,但IQueryable對象返回0結果。linq查詢適用於每臺機器,但我的

我們都使用相同的確切代碼庫(一切都檢查汞,我們都同步)。我已經重新啓動了我的機器和數據庫駐留的服務器,以防發生緩存。

如果我刪除where子句,我實際上會得到結果。我們都處於虧損狀態。任何人有任何明智的想法?

這裏是如果你想看到的代碼,但我不認爲在這種情況下,重要的:

IQueryable<MOffice> offices = (from returnData in entityModel.MOffices 
              where returnData.HiringProjectCoordinator == true 
              select returnData).Take((int)topCount); 
      return offices.ToList(); 
+2

那麼,你的機器或「代碼和數據庫完全相同」這種說法顯然有些不同。是不正確的。無論哪種方式,我們幾乎沒有辦法爲您進行心理調試。一個問題,但; 'topCount'的價值是什麼,它來自哪裏,如果你完全去除了'Take(topCount)'調用會發生什麼? –

+0

你絕對,完全,完全100%確定你正在和其他機器打到同一個數據庫嗎? –

+0

代碼和db完全一樣。 3個人爲我證實了這一點。看到解決方案 - 現在固定,但絕對是我見過的最奇怪的事情。 – Mario

回答

1

試試這個

var results = entityModel.MOffices 
        .Where(x=>x.HiringProjectCoordinator == true) 
        .OrderBy(x=>x.Something) 
       //.Take(int.Parse(topCount)) 
        .ToList(); 
int count = results.Count(); 
return results; 

檢查count是如您所願。根據需要刪除評論。

  • 查詢是否適用於LinqPad
  • 確認每個人都在引用相同的數據庫?當然?即將一個特定記錄firstName改爲'foo'以確定。
  • 對另一個表的類似查詢是否相同?
+0

我也嘗試過,它不起作用(再次,適用於所有其他開發人員機器) – Mario

+0

對不起,我以爲你的意思是改變查詢的風格。如果我不選擇像你建議的topcount(採取),那麼它的作品?!?!當然,我需要限制到10或20,那麼你會建議什麼? – Mario

+0

HAHA。我很難過。刪除Take()並將其放回(完全相同的代碼)後,它在我的機器上運行(或者也許是第三次重新啓動)。 Thx尋求幫助 – Mario

-1

使用LinqPad然後檢查生成的LINQ的SQL語句。

+0

如果您閱讀我的問題,您會看到我使用Profiler來檢查實際的SQL,並發現它執行的屬性並返回了正確數量的結果 – Mario

相關問題