2012-07-10 106 views
0

到目前爲止,我想我可以做相關的表:查詢使用EF「包括」包括其中

var num = db.MyTable.Include(x => x.RelatedTable) 
      .Count(x.idTenant == CurrentTenantID && x.Active && 
       x.RelatedTable.SomeProperty.Value == true); 

這總是返回零個記錄。 我是否錯誤地認爲包括RelatedTable我可以在where部分使用它?

順便說一下......「SomeProperty」是可爲空的,這就是爲什麼「.Value」。

我正在使用實體框架4.1。 (數據庫優先)

回答

1

你想獲得記錄數?如果是這樣,爲什麼你甚至需要Include?實體框架將在您評估您的Count條件時,爲您延遲加載RelatedTable實體集。另外,如果SomePropertybool?,則應在檢查值本身之前檢查它是否有值。

var num = db.MyTable.Count(x => 
    x.idTenant == CurrentTenantID && 
    x.Active && 
    (x.RelatedTable.SomeProperty.HasValue && 
    x.RelatedTable.SomeProperty.Value)); 
+0

謝謝,我認爲在這種情況下「包含」是強制性的。 – Romias 2012-07-10 15:59:12

1

如果您只想訪問Where部分中的導航屬性,則不需要使用IncludeInclude僅用於將相關記錄連同從數據庫到主應用程序的主記錄一起提取(應急加載)到您的應用程序中,但如果您只想計數記錄,則沒有意義。

+0

謝謝,我認爲在這種情況下,「包含」是強制性的。 – Romias 2012-07-10 15:59:23