Entity framework 级联预加载问题
Supose我从数据库表创建了以下实体: 人 学生 学生包括个人作为导航属性 人员具有导航属性国家/地区以连接查找表国家/地区 在学生元数据中,我确实为导航属性Person添加了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服务时,它
[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-很高兴为您提供帮助,如果有帮助,请勾选此作为正确答案。