我有一个解决方案,我使用RTM模板创建自我跟踪实体.我已经拆分了两个项目之间的实体和上下文,以便我可以重用类型定义,因为我计划通过WCF运行客户端/服务器.
我的一个服务方法需要返回带有“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
…我期待得到的是“Product”对象,子“ProductSku”对象(位于“Product”的“Skus”集合中)及其“ProductPrice”对象(位于“ PriceHistory“收集”ProductSku“) – 但我只收回”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
……但这也没有区别.
显然,我必须做错事.任何人都可以了解那些事物是什么,因为我已经在这里玩了几个小时现在绕圈子!
解决方法
也许投影可以做到这一点?