EF CTP5 - 强类型的预先加载 - 如何包含嵌套导航属性?

时间:2011-01-26 23:56:46

标签: entity-framework poco eager-loading entity-framework-ctp5

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

以下是该模型的相关部分:

enter image description here

相关关系:   - 单个多个城市   - 单个城市具有单个州

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

在EF4中,我会这样做:

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

在EF CTP5中,我们有一个强类型的包含,它需要Expression<Func<TModel,TProperty>>

我可以让县的所有城市都没有问题:

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

但我如何才能获得这些城市的

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

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

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

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

有什么想法吗?我是否需要回退到这个场景中包含的魔术字符串?

1 个答案:

答案 0 :(得分:51)

为此,您可以使用选择方法:

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

Here你可以找到另一个例子。