.net - Entity Framework 4 : Eager Loading (Include) with filters using Self Tracking Entities

标签 .net sql-server linq ado.net entity-framework-4

我有一个解决方案,我使用 RTM 模板创建了 self 跟踪实体。我已将实体和上下文拆分为 2 个项目,以便在计划通过 WCF 运行客户端/服务器时可以重用类型定义。

我的服务方法之一需要返回“Product”对象的图形,其中子对象为“ProductSku”,而这些对象又具有“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

...但这也没有什么区别。

显然,我一定做错了什么。任何人都可以阐明那是什么东西吗,因为我已经在这方面花了几个小时了,现在一直在兜圈子!

最佳答案

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

看看Linq filter collection with EF

关于.net - Entity Framework 4 : Eager Loading (Include) with filters using Self Tracking Entities,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3595511/

相关文章:

.net - WPF - 如何使文本垂直滚动并暂停

sql-server - 如何为 SQL Server 2017 Management Studio 创建新用户

sql-server - 使用规范化表真的更好吗?

linq - LINQ 表达式中的值是通过引用传递的吗?

c# - 如何使用 LINQ 获取日期范围内的平均值

.net - 了解在 .NET 中异步调用方法的替代方案

.net - NDepend 在可移植类库中看不到程序集属性

sql - 如何在我的 T-SQL 查询中传递有关日期的逻辑?

c# - 从两组日期范围 C# 中查找差距日期范围

javascript - 使用自定义标记的 Google map V3.0