Entity framework 级联预加载问题

Entity framework 级联预加载问题,entity-framework,wcf-ria-services,eager-loading,Entity Framework,Wcf Ria Services,Eager Loading,Supose我从数据库表创建了以下实体: 人 学生 学生包括个人作为导航属性 人员具有导航属性国家/地区以连接查找表国家/地区 在学生元数据中,我确实为导航属性Person添加了[Include]。 在个人元数据中,我确实为导航属性国家/地区添加了[Include] 在加载学生数据时,我希望包括个人和国家数据: this.ObjectContext.Students.Include("Person").Include("Country"); 当我使用以前版本的ASP.NET数据Ria服务时,它

Supose我从数据库表创建了以下实体:

学生

学生包括个人作为导航属性

人员具有导航属性国家/地区以连接查找表国家/地区

在学生元数据中,我确实为导航属性Person添加了
[Include]
。 在个人元数据中,我确实为导航属性国家/地区添加了
[Include]

在加载学生数据时,我希望包括个人和国家数据:

this.ObjectContext.Students.Include("Person").Include("Country");
当我使用以前版本的ASP.NET数据Ria服务时,它工作得很好。现在,当它改为WCF Ria服务时,上述方式不再有效。 系统给我的错误说国家不是学生的导航属性

如何解决此问题?

错误是正确的

Include
位于您要查询的
ObjectQuery
上,在本例中为“学生”

国家
个人
的导航属性,而不是
学生

将代码更改为:

this.ObjectContext.Students.Include("Person").Include("Person.Country");
或者简单地说:

this.ObjectContext.Students.Include("Person.Country");
As EF将根据嵌套的include自动包含“Person”

您需要记住,
Include
根据调用它的
ObjectQuery
返回一个
ObjectQuery


因此,仅仅因为你做了
学生.Include(“Person”)
,这并不意味着在这一点上,变量是
ObjectQuery
——变量仍然是
ObjectQuery

太棒了!很高兴知道。简单的解决方案@KentZhou-很高兴为您提供帮助,如果有帮助,请勾选此作为正确答案。