當通過實體框架訪問數據庫我有三個可用的實體:LINQ:過濾子對象
- stt_dictionary
- stt_concept
- stt_term
每個實體具有收藏第四個實體stt_change_log。
因此,例如,
stt_dictionary.stt_change_log = ICollection<stt_change_log>
那些頂部3元件和stt_change_log之間的關係是
stt_change_log.element_id = (stt_dictionary | stt_concept | stt_term).id;
然而,如stt_dictionary,stt_concept和stt_term都有INT作爲它們的ID類型,還需要以下內容:
stt_change_log.element_type_id = (7 | 8 | 9)
現在,當我運行下面的查詢語句時,它會返回所有具有指定ID的stt_change_log實體,這意味着如果我想在stt_dictionary.id = 1時需要stt_change_log實體,則還會獲得stt_change_log條目,這些條目屬於stt_concept和stt_term實體ID也= 1。換句話說,stt_change_log集合需要額外的過濾。
var daoDictionary = (from d in db.stt_dictionary
.Include("stt_change_log.stt_change_types")
where d.id == id
select d).FirstOrDefault();
我怎麼能由stt_change_log集合中的element_type_id財產指定爲每個項目的值過濾stt_change_log實體?
我還會補充一點,我的意圖是在單個查詢中執行此操作。
感謝您的快速響應,埃裏克。我其實並不需要第一個。包括聲明,因爲該級別的兒童由一個協會填充。但是,即使stt_change_log和stt_change_types之間存在關聯,stt_change_log也是如此。stt_change_type屬性不會自動填充(我不知道爲什麼)。 因此,因爲.Include語句僅用於下一級(不是我想要篩選的級別),所以這對我有利嗎?這是否意味着*有*我可以在stt_change_log集合上做的事情? – awj 2013-03-26 17:39:05