Ограничить результаты связанной таблицей, родительская таблица которой имеет несколько результатов в EF CoreC#

Место общения программистов C#
Ответить
Anonymous
 Ограничить результаты связанной таблицей, родительская таблица которой имеет несколько результатов в EF Core

Сообщение Anonymous »

Я пытаюсь создать запрос EF Core и не знаю, как можно построить необходимое предложениеwhere. Эквивалентным SQL-запросом может быть:

Код: Выделить всё

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'
Дело в том, что у каждого автора есть несколько книг, и мне нужно установить ограничение в предложенииwhere по столбцу в дочерней таблице, которая также имеет несколько результатов.

Код: Выделить всё

var results = await context.Authors
.Include(i => i.Books)
.ThenInclude(i => i.BookReviews)
.FirstOrDefaultAsync(x => x.Id == author && x.Books.....
И здесь я не могу продолжить работу с .BookReview.Approved == "Y", поскольку Books — это коллекция.
Свойство навигации для этих двух таблиц создается в сущности 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);
Примечание. Всегда существует только один результат «Одобрено».


Подробнее здесь: https://stackoverflow.com/questions/797 ... sults-on-e
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»