C# 在实体框架核心中包含集合

C# 在实体框架核心中包含集合,c#,entity-framework,entity-framework-core,C#,Entity Framework,Entity Framework Core,例如,我有以下实体: public class Book { [Key] public string BookId { get; set; } public List<BookPage> Pages { get; set; } public string Text { get; set; } } public class BookPage { [Key] public string BookPageId { get; set; }

例如,我有以下实体:

public class Book
{
    [Key]
    public string BookId { get; set; }
    public List<BookPage> 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; }
}
但问题是,它抛出异常

ArgumentException:属性表达式“x=>{来自第y页 在x中选择[y].PageTitle}'无效。表达式应该表示 属性访问:“t=>t.MyProperty”。当指定多个 属性使用匿名类型:“t=>new{t.MyProperty1, t、 MyProperty2}’。参数名称:propertyAccessExpression


出了什么问题,我该怎么办?

尝试直接在
中访问
PageTitle
,然后包括

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();
}

它是如何工作的?我的意思是,当我输入y.PageTitle时,我没有带有PageTitle的Intellisense字段,但它可以工作,构建@尤里恩。这是因为您使用了此重载:
然后包含([NotNullAttribute]此IIncludableQueryable源,[NotNullAttribute]表达式导航属性路径)
。VS intellisense看到另一个是
thenclude([NotNullAttribute]此IIncludableQueryable源,[NotNullAttribute]表达式导航属性路径)
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();
}