在Entity Framework Core中包含集合

例如,我有这些实体:

public class Book { [Key] public string BookId { get; set; } public List Pages { get; set; } public string Text { get; set; } } public class BookPage { [Key] public string BookPageId { get; set; } public PageTitle PageTitle { get; set; } public int Number { get; set; } } public class PageTitle { [Key] public string PageTitleId { get; set; } public string Title { get; set; } } 

如果我只知道BookId,我应该如何加载所有PageTitles?

这是我试图这样做的方式:

 using (var dbContext = new BookContext()) { var bookPages = dbContext .Book .Include(x => x.Pages) .ThenInclude(x => x.Select(y => y.PageTitle)) .SingleOrDefault(x => x.BookId == "some example id") .Pages .Select(x => x.PageTitle) .ToList(); } 

但问题是,它会抛出exception

ArgumentException:属性表达式’x => {from page y in x select [y] .PageTitle}’无效。 表达式应表示属性访问:’t => t.MyProperty’。 指定多个属性时,请使用匿名类型:’t => new {t.MyProperty1,t.MyProperty2}’。 参数名称:propertyAccessExpression

怎么了,我该怎么办?

尝试直接在ThenInclude访问ThenInclude

 using (var dbContext = new BookContext()) { var bookPages = dbContext .Book .Include(x => x.Pages) .ThenInclude(y => y.PageTitle) .SingleOrDefault(x => x.BookId == "some example id") .Select(x => x.Pages) .Select(x => x.PageTitle) .ToList(); }