Сначала я использую код 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.Но как использовать «Включить» в этом запросе, если это проблема?