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

前端之家收集整理的这篇文章主要介绍了.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

猜你在找的MsSQL相关文章