我有一个使用RTM模板创建自我跟踪实体的解决方案。我将实体和上下文划分为2个项目,以便在计划通过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”对象(位于““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

...但这也没有区别。

显然,我一定做错了。任何人都可以像我已经花了几个小时在圈子里转转一样,阐明那是什么吗?

最佳答案

也许投影可以做到这一点?

看看Linq filter collection with EF

10-06 03:08