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

RPM*_*984 29 entity-framework poco eager-loading entity-framework-ctp5

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

这是模型的相关部分:

在此输入图像描述

相关关系: - 一个许多城市 - 一个城市只有一个

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

在EF4中,我会这样做:

var query = ctx.Counties.Include("Cities.State");
Run Code Online (Sandbox Code Playgroud)

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

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

var query = ctx.Counties.Include(x => x.Cities);
Run Code Online (Sandbox Code Playgroud)

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

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

var query = ctx.Counties.Include(x => x.Cities.State)
Run Code Online (Sandbox Code Playgroud)

因为ICollection<City>没有一个叫做的属性State.

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

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

Mor*_*avi 52

为此你可以使用Select方法:

var query = ctx.Counties.Include(x => x.Cities.Select(c => c.State))
Run Code Online (Sandbox Code Playgroud)

在这里你可以找到另一个例子.