Array_agg в ядре EF 6C#

Место общения программистов C#
Ответить
Anonymous
 Array_agg в ядре EF 6

Сообщение Anonymous »

Я работаю с EF Core 6 и PostgreSQL, и мне нужно создать запрос, который эффективно извлекает имена авторов вместе с массивом названий их книг.
Схема моей базы данных:
Книги
  • BookId (номер)
    < li>AuthorId (число)
  • Название книги (строка)
Авторы
  • Идентификатор автора (число)
  • Имя автора (строка)
Я пытаюсь выполнить SQL-запрос:

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

SELECT Authors.AuthorName, array_agg(Books.BookName)
FROM Authors
JOIN Books ON Books.AuthorId = Authors.AuthorId
GROUP BY Authors.AuthorId
Поскольку EF Core 6 не поддерживает напрямую array_agg, как мне преобразовать это в C# LINQ to SQL, отдавая приоритет производительности?
Вот что я могу сделать до сих пор пробовал:
C#

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

from a in context.Authors
join b in context.Books
on a.AuthorId equals b.AuthorId
group b.BookName by a.AuthorId into g
select new
{
AuthorId = g.Key,
BookNames = g.Select(name => name).ToList()
};
В настоящее время все, что я пробовал при использовании Group By, переводится в join, а затем влевоеJoin.
Есть ли способ добавить перевод в array_agg?
Будем очень признательны за любую помощь или предложения!

Подробнее здесь: https://stackoverflow.com/questions/790 ... -ef-core-6
Ответить

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

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

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

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

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