.net – 实体框架4:使用自我跟踪实体的过滤器进行预先加载(包括)

我有一个解决方案,我使用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

……但这也没有区别.

显然,我必须做错事.任何人都可以了解那些事物是什么,因为我已经在这里玩了几个小时现在绕圈子!

解决方法

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

看看Linq filter collection with EF

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...