级联急切加载问题

时间:2010-11-26 00:08:21

标签: entity-framework wcf-ria-services eager-loading

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

学生

学生将人员作为导航属性。

Person具有导航属性Country以连接查找表Country。

在学生元数据中,我确实为导航属性Person添加了[Include]。 在Person元数据中,我确实将[Include]放在导航属性Country。

加载学生数据时,我想加载喜欢包含人员和国家/地区数据:

this.ObjectContext.Students.Include("Person").Include("Country");

当我使用以前版本的ASP.NET Data Ria Service时,这工作正常。现在当它改为WCF Ria服务时,上面的方式不再工作了。 系统给我错误说国家不是学生的导航属性。

如何解决此问题?

1 个答案:

答案 0 :(得分:2)

错误是正确的。

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

CountryPerson的导航属性,而不是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>