SELECT * FROM Authors A
LEFT JOIN Books B ON B.AuthorId = A.Id
LEFT JOIN BookReviews R ON R.BookId=B.Id AND R.Edition=B.Edition
WHERE A.Id = @AuthorId AND R.Approved='Y'
< /code>
Здесь заключается в том, что на автора есть несколько книг, и мне нужно поместить ограничение в предложении «Где столб» на столбце на дочерней таблице, которая также имеет несколько результатов.var results = await context.Authors
.Include(i => i.Books)
.ThenInclude(i => i.BookReviews)
.FirstOrDefaultAsync(x => x.Id == author && x.Books.....
< /code>
И там я не могу продолжить с .bookReview.Approved == "y" < /code> Потому что книги - это коллекция.
Навигационное свойство для этих двух таблиц создается в объекте Books. (Не спрашивайте меня)builder.HasOne(s => s.BookReview)
.WithOne(d => d.Book)
.HasForeignKey(d => new { d.BookId, d.Edition })
.HasPrincipalKey(s => new { s.Id, s.Edition })
.IsRequired(false);
Примечание: всегда есть только один «утвержденный» результат.
Извините, так как название не может быть описательным по вопросу.[code]SELECT * FROM Authors A LEFT JOIN Books B ON B.AuthorId = A.Id LEFT JOIN BookReviews R ON R.BookId=B.Id AND R.Edition=B.Edition WHERE A.Id = @AuthorId AND R.Approved='Y' < /code> Здесь заключается в том, что на автора есть несколько книг, и мне нужно поместить ограничение в предложении «Где столб» на столбце на дочерней таблице, которая также имеет несколько результатов.var results = await context.Authors .Include(i => i.Books) .ThenInclude(i => i.BookReviews) .FirstOrDefaultAsync(x => x.Id == author && x.Books..... < /code> И там я не могу продолжить с .bookReview.Approved == "y" < /code> Потому что книги - это коллекция. Навигационное свойство для этих двух таблиц создается в объекте Books. (Не спрашивайте меня)builder.HasOne(s => s.BookReview) .WithOne(d => d.Book) .HasForeignKey(d => new { d.BookId, d.Edition }) .HasPrincipalKey(s => new { s.Id, s.Edition }) .IsRequired(false); [/code] Примечание: всегда есть только один «утвержденный» результат.