Хотите загружать отслеживаемые предметы? - PullRequest
0 голосов
/ 30 ноября 2009

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

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

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

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

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

1 Ответ

1 голос
/ 30 ноября 2009

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...