2010-11-26 4 views
3

Supose Je suit des entités créées à partir des tables de base de données:Cascade problème de chargement désireux

Personne

Student

étudiants comprennent personne comme propriété de navigation.

Une personne possède une propriété de navigation Country to connect table de recherche Country.

Dans les métadonnées Étudiant, je mets [Include] pour la propriété de navigation Personne. En métadonnées Personne, je mets [Include] pour la propriété de navigation Pays.

Lors du chargement des données des étudiants, je veux le chargement désireux aime inclure la personne et les données du pays:

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

Ce fonctionnait très bien quand j'utilise la version précédente de données ASP.NET service Ria. Maintenant, quand il est changé pour WCF Ria Service, au-dessus de la façon ne fonctionne plus. Système me donne l'erreur dit Pays n'est pas une propriété de navigation de l'étudiant.

Comment résoudre ce problème?

Répondre

2

L'erreur est correcte.

Include est sur le ObjectQuery<T> que vous interrogez, dans ce cas "Etudiants".

Country est une propriété de navigation de Person, et non de Student.

Changer votre code à ceci:

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

Ou simplement:

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

Comme EF inclura automatiquement "personne" en fonction de la nichée comprennent.

Vous devez vous rappeler que Include renvoie un ObjectQuery<T> basé sur le ObjectQuery<T> sur lequel il a été appelé.

Donc, juste parce que vous faites Students.Include("Person"), cela ne signifie pas à ce stade, la variable est ObjectQuery<Person> - la variable est toujours ObjectQuery<Student>.

+0

Parfait! Bon à savoir. Solution simple! – KentZhou

+0

@KentZhou - heureux de vous aider, veuillez cocher ceci comme bonne réponse si cela vous a aidé. – RPM1984

Questions connexes