Например, у меня есть эти объекты:Включить сбор в Entity Framework ядра
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; }
}
Как я должен загрузить все PageTitles, если я знаю только BookID?
Вот это, как я пытаюсь сделать это:
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();
}
Но проблема в том, что он бросает исключение
ArgumentException: Выражение свойства «х => {из страниц y in x select [y] .PageTitle} 'недействителен. Выражение должно представлять доступ к собственности: 't => t.MyProperty'. При задании нескольких свойств используется анонимный тип: 't => new {t.MyProperty1, t.MyProperty2}'. Имя параметра: propertyAccessExpression
Что не так, что именно я должен делать?
, как это работает? Я имею в виду, когда я печатаю y.PageTitle, у меня нет поля Intellisense с помощью PageTitle, но он работает, строит! –
См. Https://github.com/dotnet/roslyn/issues/8237 – Smit