Как использовать Включить в выражение запроса с инициализацией объекта с помощью EF 4.1 - PullRequest
1 голос
/ 13 февраля 2012

Сначала я использую код Entity Framework 4.1, и вот упрощенная версия классов моего домена:

public class Tour
{
    public string TourName { get; set; }
    public virtual List<Event> Events { get; set; } 
}
public class Event
{
    public string EventName { get; set; }
    public virtual List<Participant> Participants { get; set; } 
}

public class Participant
{
    public string ParticipantName { get; set; }
}

, а в клиентском приложении я использую эти классы:

public class EventItem
{
    public string DisplayName { get; set; }
    public IEnumerable<ParticipantItem> Tourists { get; set; } 
}

public class ParticipantItem
{
    public string Name { get; set; }
}

и запрос:

var query = from tour in context.Tours
                    from evt in tr.Events
                    where tour.ApiKey == APIKey
                    select new EventItem
                               {
                                   DisplayName = evt.EventName,
                                   Tourists = from person in evt.Participants
                                              select new ParticipantItem
                                                         {
                                                             Name = person.ParticipantName
                                                         }
                               };


        return query.ToList();

Работает за исключением того, что внутреннее выражение запроса не возвращает данных (from person in evt.Participants ...).Я думаю, что это как-то связано с отложенной загрузкой свойства Участники объекта Event.Но как использовать «Включить» в этом запросе, если это проблема?

...