我有一個解決方案,我使用RTM模板創建了自我跟蹤實體。我在兩個項目之間分割了實體和上下文,以便我可以重用類型定義,因爲我計劃通過WCF運行客戶端/服務器。實體框架4:使用自我跟蹤實體的過濾器加載(包含)
我的一個服務方法是用「ProductSku」的子對象返回一個「Product」對象的圖形,而這些子對象又具有「ProductPrice」的子對象。選擇標準將位於「Product」對象的「Name」屬性以及「ProductPriceObject」的「FinancialPeriodID」屬性中。目前,我沒有在搜索中包含該名稱,但我有問題帶回圖表。
如果我只是執行下面的查詢(注意,這句法從LinqPad拍攝,而不是實際的應用程序代碼)...
from product in Products.Include("Skus.PriceHistory")
select product
...然後我能夠檢索完整的對象圖對於我需要的項目,當然在這一點上沒有過濾器。
相反,如果我介紹過濾器如下...
from product in Products.Include("Skus.PriceHistory")
join sku in ProductSkus on product.ID equals sku.ProductID
join price in ProductPrices on sku.ID equals price.ProductSkuID
where price.FinancialPeriodID == 244
select product
...我所期待得到的回覆是「產品」的對象,孩子「ProductSku」對象(這是在「Product」的「Skus」集合)及其「ProductPrice」對象(位於「ProductSku」的「PriceHistory」集合中) - 但我只返回「Product」對象,「Skus」集合是空。
我也曾嘗試編碼查詢作爲...
from product in Products.Include("Skus.PriceHistory")
from sku in product.Skus
from price in sku.PriceHistory
where price.FinancialPeriodID == 244
select product
...但是這並沒有區別兩種。
顯然,我一定在做錯事。任何人都可以從中瞭解到什麼是什麼,因爲我已經在這裏待了好幾個小時,現在正在圈子裏散步!
對不起,「成品保持單元」和「PriceHistory」是兩個集合,所以這是不可能的在單個語句中沿路徑一路導航。我擔心沒有選擇,只能使用連接或from來包含連接,如兩個示例中所示。 無論如何,謝謝。 – 2010-08-29 16:36:31
這可能沒有幫助@MartinRobins,但它幫助我在我自己的項目中! +1這個語法適用於我(也許完全不同於原始問題的設置,我不知道......) – BenSwayne 2013-05-09 17:34:38