【发布时间】:2011-04-05 11:05:14
【问题描述】:
我有一个解决方案,我使用 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”的“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
...但这也没什么区别。
显然,我一定做错了什么。任何人都可以解释一下我在这几个小时里一直在转圈圈的东西是什么!
【问题讨论】:
标签: .net sql-server linq ado.net entity-framework-4