Frage

Ich habe ein Element zu einer Einheit (Kontakt) gebunden, die einige Navigationseigenschaften aussetzt.

Ich möchte, dass auf eine Aktion (das heißt eine „Load Kinder“ Taste), sollte der Kontakt laden für alle seine Kinder und Enkel, wie ich mit einem ObjectQuery.Include vor der Ausführung zu tun; Beispiel (pseudo):

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

Ich möchte auch die Ergebnisse formen können, indem sie Gegenstände wie dem obigen Beispiel nicht nur neu geladen, wenn die Abfrage des Modells selbst.

Ich denke, das in gewisser Weise ein Teil des Entity-Frameworks worden sollte.

War es hilfreich?

Lösung

Ich bin nicht positiv ich die Frage folgen, aber lassen Sie mich überprüfen:

Sie wollen ein Unternehmen zu übernehmen, die Sie bereits geladen haben, dann eine Navigationseigenschaft laden mit sind Pfade für diese Eigenschaft. Dies ist eigentlich nicht so schwierig, solange Sie den gleichen Kontext verwenden, das Sie das erste Objekt laden verwendet.

Der wichtige Punkt ist, dass, wenn Sie eine Abfrage zu tun, die ein Unternehmen gibt, Entity Framework wird es automatisch mit einem seinen verbundenen Objekten verknüpft, die Sie bereits haben. Also, was Sie wirklich wollen, ist eine neue Abfrage zu erzeugen, die die zusätzlichen Daten zurückgibt, mit einigen enthält.

Jede Bezugnahme in Entity Framework hat eine Methode namens CreateSourceQuery . Es gibt eine Objektabfrage, so können Sie es verwenden, dies zu tun (sorry, C #):

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

Der ToList Aufruf führt die Abfrage aus, und Entity Framework wird alle Ergebnisse und diese automatisch auf Sie SubContacts EntityCollection hinzuzufügen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top