Как вы получаете записи и все дочерние записи в одной базе данных попадания в ADO.NET Entities? - PullRequest
0 голосов
/ 27 апреля 2009

Я хотел бы сделать один вызов базы данных для получения следующих данных, но я изо всех сил пытаюсь выяснить, как должен выглядеть LINQ. Вот моя текущая реализация (я знаю, что это плохо !!):

var photos = from photo in entitiesContext.Photo
             join pg in entitiesContext.PhotoGallery on photo.PhotoGallery.PhotoGalleryID equals pg.PhotoGalleryID
             where pg.PhotoGallery == photoGalleryID
             select photo;

var photoList = photos.ToList();

foreach (var photoForLoading in photoList)
{
    photoForLoading.UserReference.Load();
    photoForLoading.PhotoComments.Load();

    foreach (var comment in photoForLoading.PhotoComment)
    {
        comment.UserReference.Load();
    }
}

return photoList;

Итак, как вы можете видеть выше, я хочу получить:

  • Все фотографии из определенной фотогалереи:
    • Данные пользователя на каждой фотографии
    • Комментарии к каждой фотографии
      • Данные пользователя на каждый комментарий

Как мне сделать это в LINQ с ADO.NET Entities Framework?

Ура, Ash.

Ответы [ 2 ]

6 голосов
/ 27 апреля 2009

Используйте метод .Include для загрузки связанных сущностей. Например:

from photo in entitiesContext.Photo
                          .Include("UserReference")
                          .Include("PhotoComments")
etc...
1 голос
/ 27 апреля 2009

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

См. статью для получения дополнительной информации.

...