EF CTP5 - 强类型急切加载 - 如何包含嵌套导航属性?

Posted

技术标签:

【中文标题】EF CTP5 - 强类型急切加载 - 如何包含嵌套导航属性?【英文标题】:EF CTP5 - Strongly-Typed Eager Loading - How to Include Nested Navigational Properties? 【发布时间】:2011-06-16 05:49:09 【问题描述】:

尝试将我们的 EF4 解决方案转换为 EF CTP5,但遇到了问题。

这是模型的相关部分:

相关关系: - 一个拥有许多城市 - 一个City有一个single State

现在,我想执行以下查询: - 获取系统中的所有县,包括所有城市,以及这些城市的所有州。

在 EF4 中,我会这样做:

var query = ctx.Counties.Include("Cities.State");

在 EF CTP5 中,我们有一个强类型的 Include,它接受 Expression<Func<TModel,TProperty>>

我可以得到县的所有城市没问题:

var query = ctx.Counties.Include(x => x.Cities);

但是我怎样才能获得这些城市的 State 呢?

我使用的是纯 POCO,所以 County.CitiesICollection<City>,因此我不能这样做:

var query = ctx.Counties.Include(x => x.Cities.State)

因为ICollection<City> 没有名为State 的属性。

这几乎就像我需要使用嵌套的 IQueryable。

有什么想法吗?在这种情况下我需要回退到魔术字符串 Include 吗?

【问题讨论】:

【参考方案1】:

为此,您可以使用 Select 方法:

var query = ctx.Counties.Include(x => x.Cities.Select(c => c.State))

Here你可以再找一个例子。

【讨论】:

聪明!现在正在尝试...敬请期待。 效果很好,谢谢大家! +1 并接受。最近没有看到你回答很多 EF4 问题 - Ladislav 让我们俩都失望了。 :) 没问题的哥们!那是因为我完全专注于 EF Code First 问题。我希望你也开始使用它,因为我仍然在你的问题上看到 EDMX 文件:) 是的,我能说什么 - 我喜欢漂亮的图表。 :) 需要您的帮助(如果可以的话)。 :) 查看我的(相关)问题 - ***.com/questions/5189268/…

以上是关于EF CTP5 - 强类型急切加载 - 如何包含嵌套导航属性?的主要内容,如果未能解决你的问题,请参考以下文章

EF急切加载和延迟加载的区别?

EF 代码优先 CTP5。如何存储来自基类的继承数据

.NET Core/EF Core 2.0 升级后急切加载“类型之间未定义强制运算符”

EF Core - 为啥“无限”嵌套急切加载?

EF CTP5 - 找不到“数据库优先”示例

EF Core,投影子集合急切加载