読者です 読者をやめる 読者になる 読者になる

みかづきメモ

学習したことのメモとか、日記とか、備忘録。

EntityFramework で子の子を読み込みたい

リレーションが下のような感じの場合。

public class Anime
{
    public int AnimeId { get; set; }
    public int Year { get; set; }
    public int Quarter { get; set; }
    public string Title { get; set; }
    public virtual ICollection<Episode> Episodes { get; set; }
}

public class Episode 
{
    public int EpisodeId { get; set; }
    public int Sequense { get; set; }
    public string Title { get; set; }
    public virtual ICollection<Cast> Casts { get; set; }
}

public class Cast 
{
    public int CastId { get; set; }
    public string Name { get; set; }
}

今期放送している Anime から Cast を取得したい場合、以下のようにすればできます。

var anime = context.Anime.AsNoTracking()
                   .Where(w => w.Year == 2016)
                   .Where(w => w.Quarter == 3)
                   .Include(w => w.Episodes.Select(v => v.Cast))
                   .ToList();
foreach (var cast in anime.Episode.Cast) 
{
    Console.WriteLine(cast.Name);
}