Supose我有从数据库表创建的以下实体:
人
学生
学生将人员作为导航属性。
Person具有导航属性Country以连接查找表Country。
在学生元数据中,我确实为导航属性Person添加了[Include]
。
在Person元数据中,我确实将[Include]
放在导航属性Country。
加载学生数据时,我想加载喜欢包含人员和国家/地区数据:
this.ObjectContext.Students.Include("Person").Include("Country");
当我使用以前版本的ASP.NET Data Ria Service时,这工作正常。现在当它改为WCF Ria服务时,上面的方式不再工作了。 系统给我错误说国家不是学生的导航属性。
如何解决此问题?
答案 0 :(得分:2)
错误是正确的。
Include
位于您要查询的ObjectQuery<T>
上,在本例中为“学生”。
Country
是Person
的导航属性,而不是Student
。
将您的代码更改为:
this.ObjectContext.Students.Include("Person").Include("Person.Country");
或者简单地说:
this.ObjectContext.Students.Include("Person.Country");
由于EF会根据嵌套的include自动包含“Person”。
您需要记住Include
根据调用的ObjectQuery<T>
返回ObjectQuery<T>
。
因为你做Students.Include("Person")
而不是那个意思,变量是ObjectQuery<Person>
- 变量仍然是ObjectQuery<Student>
。