2012-06-02 141 views
4

我有一個DAL方法來檢索項目。這些項目存在於DAL方法中,但不在調用代碼中。這怎麼可能?IEnumerable項消失 - 存在於DAL中但不包含調用者

調用代碼:

IEnumerable<InstallationSummary> installationSummaryList = 
InstallationSummaryLogic.GetByServerAppAndGroup(appServer, appWithValidGroup); 

DAL方法表明項目的確存在:

enter image description here

調用代碼,顯示沒有任何項目。他們去了哪裏?
(這是在這個問題的頂部示出的相同的線。)

enter image description here

在DAL方法和調用代碼之間的唯一事情是一個邏輯類這是簡單地直通。爲了完整起見,我在這裏包括它:

public static IEnumerable<InstallationSummary> GetByServerAppAndGroup(ApplicationServer appServer, ApplicationWithOverrideVariableGroup appWithGroup) 
    { 
     return DataAccessFactory.GetDataInterface<IInstallationSummaryData>().GetByServerAppAndGroup(appServer, appWithGroup); 
    } 

編輯 - 使用Where來電顯示完整的DAL方法

public IEnumerable<InstallationSummary> GetByServerAppAndGroup(ApplicationServer appServer, ApplicationWithOverrideVariableGroup appWithGroup) 
{ 
    IQueryable<InstallationSummary> summaries = this.Database.InstallationSummaries 
     .Include(x => x.ApplicationServer) 
     .Include(x => x.ApplicationWithOverrideVariableGroup.Application) 
     .Include(x => x.ApplicationWithOverrideVariableGroup.CustomVariableGroup) 
     .Where(x => x.ApplicationServer.IdForEf == appServer.IdForEf) 
     .Where(x => x.ApplicationWithOverrideVariableGroup.Application.IdForEf == appWithGroup.Application.IdForEf); 

    if (appWithGroup.CustomVariableGroup == null) 
    { 
     return summaries.Where(x => x.ApplicationWithOverrideVariableGroup.CustomVariableGroup == null); 
    } 

    return summaries 
     .Where(x => 
     x.ApplicationWithOverrideVariableGroup != null && 
     x.ApplicationWithOverrideVariableGroup.CustomVariableGroup != null && 
     x.ApplicationWithOverrideVariableGroup.CustomVariableGroup.IdForEf == appWithGroup.CustomVariableGroup.IdForEf); 
} 

回答

6

GetByServerAppAndGroup方法過濾器summaries(我們看不到什麼確實如此 - 如果您要剪切並粘貼該方法本身將會很有幫助)。我的猜測是summaries中的結果沒有通過Where調用中的過濾器。

+0

它也可能是延遲執行的問題嗎?在他的代碼中的什麼位置我們會看到實際的LINQ查詢被執行?他可能會認爲DAL具有代碼,因爲調試器在詢問他的收集時正在列舉他的查詢。 –

+0

@BradRem,如果您在調試器中展開結果視圖,它應該執行查詢。 – svick

+0

我在問題中添加了DAL代碼。但是,如果您在屏幕截圖中注意到,我已經在返回聲明中打開了F10。注意結束方式大括號突出顯示。這意味着Where過濾器已被應用。 –

相關問題