#c# #sql-server #entity-framework #select #entity-framework-core
#c# #sql-сервер #сущность-фреймворк #выберите #сущность-структура-ядро
Вопрос:
С тремя таблицами ниже:
Связь:
- Автор — один к одному с биографией автора
- Автор — один ко многим с AuthorPrix
и я бы выполнил запрос, используя синтаксис метода в ядре EF, и выбрал, чтобы ограничить возвращаемые поля.
SELECT a.FirstName, a.LastName, ab.Biography, ap.PrixName
FROM dbo.Author AS a
LEFT JOIN dbo.AuthorBiography AS ab ON a.AuthorId = ab.AuthorRef
LEFT JOIN dbo.AuthorPrix AS ap ON a.AuthorId = ap.AuthorRef
Я могу сделать так:
var a = dbCtx.Author
.Include(b => b.AuthorBiography)
.Include(c => c.AuthorPrixes)
.Select(a => new { a.FirstName, a.LastName, a.AuthorBiography.Biography })
.ToList();
Но я не могу добавить поле [Имя приза] к выбору.
Все еще возможно с помощью простого выбора или я должен использовать соединение?
Заранее спасибо за вашу помощь.
Ответ №1:
Вы можете добавить SelectMany
в свой запрос linq следующим образом:
var a = dbCtx.Author
.Include(b => b.AuthorBiography)
.Include(c => c.AuthorPrixes)
.SelectMany(a => a.AuthorPrixes)
.Select(a => new { a.PrixName, a.Author.FirstName, a.Author.LastName, a.Author.AuthorBiography.Biography })
.ToList();
Комментарии:
1. Ребята, почему вы добавляете
Include
для пользовательского проектирования?2. Спасибо за помощь, я забыл ответить вам и проверить флаг принятого ответа.