4
我有一個DAL方法來檢索項目。這些項目存在於DAL方法中,但不在調用代碼中。這怎麼可能?IEnumerable項消失 - 存在於DAL中但不包含調用者
調用代碼:
IEnumerable<InstallationSummary> installationSummaryList =
InstallationSummaryLogic.GetByServerAppAndGroup(appServer, appWithValidGroup);
DAL方法表明項目的確存在:
調用代碼,顯示沒有任何項目。他們去了哪裏?
(這是在這個問題的頂部示出的相同的線。)
在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);
}
它也可能是延遲執行的問題嗎?在他的代碼中的什麼位置我們會看到實際的LINQ查詢被執行?他可能會認爲DAL具有代碼,因爲調試器在詢問他的收集時正在列舉他的查詢。 –
@BradRem,如果您在調試器中展開結果視圖,它應該執行查詢。 – svick
我在問題中添加了DAL代碼。但是,如果您在屏幕截圖中注意到,我已經在返回聲明中打開了F10。注意結束方式大括號突出顯示。這意味着Where過濾器已被應用。 –