0

У меня есть элемент, связанный с сущностью (Contact), которая предоставляет некоторые свойства навигации.Eager Загрузка на отслеживаемые товары?

Я хочу, чтобы при каком-либо действии (т. Е. Кнопка «Загрузить детей») Контакт должен загружаться для всех его детей и больших детей, как я могу сделать с ObjectQuery.Include перед исполнением; Пример (псевдо):

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

Я хочу, чтобы иметь возможность формировать результаты также перегрузочные пункты, как в примере выше, не только при запросе самой модели.

Я думаю, что это должно было быть частью Entity-Framework в некотором роде.

ответ

1

Я не уверен я следую за вопрос, но позвольте мне проверить:

Вы хотите взять объект, который вы уже загружен, а затем загрузить свойство навигации с включают пути для этого свойства. На самом деле это не так сложно, если вы используете тот же контекст, который использовался для загрузки первого объекта.

Важным моментом является то, что всякий раз, когда вы выполняете запрос, возвращающий объект, Entity Framework автоматически связывает его с любым из связанных с ним объектов, которые у вас уже есть. Так что вы действительно хотите создать новый запрос, который возвращает дополнительные данные, в некоторых из них.

Каждая ссылка в Entity Framework имеет метод, называемый CreateSourceQuery. Он возвращает объект запроса, так что вы можете использовать его, чтобы сделать это (извините, C#):

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

Вызов ToList выполняет запрос, и Entity Framework будет принимать все результаты и автоматически добавить их к вам субконтактах EntityCollection ,

+0

Удивительно! большое вам спасибо, это было действительно полезно! – Shimmy