Question

J'ai un élément lié à une entité (Contact) qui expose certaines propriétés de navigation.

Je souhaite que lors de certaines actions (par exemple, un bouton "Charger les enfants"), le contact doit être chargé pour tous ses enfants et petits-enfants comme je peux le faire avec un ObjectQuery.Include avant l'exécution; exemple (pseudo):

DirectCast(element.DataContext, Contact).SubContacts. _
   Include("Address.State"). _
   Load()

Je souhaite également pouvoir modeler les résultats en rechargeant des éléments tels que l'exemple ci-dessus, et pas seulement lors de l'interrogation du modèle.

Je pense que cela devrait faire partie intégrante d'Entity-Framework.

Était-ce utile?

La solution

Je ne suis pas sûr d'avoir suivi la question, mais laissez-moi vérifier:

Vous souhaitez prendre une entité que vous avez déjà chargée, puis charger une propriété de navigation avec , inclure les chemins d'accès à cette propriété. Ce n’est pas vraiment difficile, tant que vous utilisez le même contexte que vous avez utilisé pour charger le premier objet.

Le point important est que chaque fois que vous effectuez une requête qui renvoie une entité, Entity Framework la reliera automatiquement à l'un de ses objets associés que vous possédez déjà. Donc, ce que vous voulez vraiment, c'est produire une nouvelle requête qui renvoie les données supplémentaires, avec certaines inclusions.

Chaque référence dans Entity Framework a une méthode appelée CreateSourceQuery . Il renvoie une requête d'objet, vous pouvez donc l'utiliser pour cela (désolé, C #):

AlreadyLoadedContact.SubContacts.CreateSourceQuery().Include("Address.State").ToList();

L'appel de ToList exécute la requête et Entity Framework prendra tous les résultats et les ajoutera automatiquement à vous, SubContacts EntityCollection.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top