2011-07-14 42 views
0

取代的關聯表中進行選擇在我的數據庫中,我有3個表格Act,ActVisi和Visi。表ActVisi是Act和Visi表之間的關聯表。在我的EF4數據模型中,關聯表ActVisi被Acts和Visis實體中的多對多導航屬性所取代。使用.Include從導航屬性

我想選擇其Visicode = 1(在ActVisi關聯表中)的條目。我已經嘗試了下面的查詢,並且它在我刪除.Include("Visis").Where(Function e.Code = 1)時正常工作,但我獲得了所有結果。我如何使下面的查詢工作。我懷疑我的vb中的lambda語法不正確。感謝您的幫助。

Dim query2 = From li In Objctx.Acts.Include("Visis").Where(Function e.Code = 1) 
        Join fc In Objctx.Cals On li.DATE1 Equals fc.DD 
        Join bl In Objctx.Cals On li.Date2 Equals bl.DD 
        Order By li.Child_ID, bl.Sort_ID, fc.Sort_ID 
        Select Project = li.Child_ID, bl_sort = bl.Sort_Wk, fc_sort = fc.Sort_Wk 
+0

是否爲您工作? –

回答

1

您的Where子句將條件放在來自「Acts」而非「ActVisis」的代碼上。 有一種方法可以從包含條件的實體。請參閱此帖以獲取更多詳情:

Join and Include in Entity Framework

+0

感謝您的建議。我試過了,它工作,但我看不到包含表的任何價值。任何建議 – Erwin1

+0

我設法通過使用FirstorDefault獲取值。謝謝你的幫助。 – Erwin1

+0

包含只是**加入**。在這種情況下,您希望加入**「ActVisis」**表,因爲該條件適用於該表中的列。 ** FirstOrDefault **可能不會給你正確的結果,它只是返回列表中的第一條記錄(可能不是你之後的記錄)或null。 –