最初にエンティティ フレームワーク 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 オブジェクトの参加者プロパティの遅延読み込みと関係があると思います。しかし、それが問題である場合、このクエリで「インクルード」を使用する方法は?