Выберите только определенные столбцы из включенной таблицы в Entity Framework Core

Если у меня есть это

var selectedEntities = db.MyEntities.Include(item => item.RelatedEntities);

Он загрузит все свойства (столбцы) в MyEntities, а также все свойства в ReleatedEntities. Если мне нужно только одно свойство от RelatedEntities, как бы мне это указать?

2 ответа

используйте .Select() и анонимный тип, чтобы ограничить нужные столбцы

      var result = await _appDbContext.Companies
            .AsNoTracking()
            .Select(company => new
            {
                Company = company,
                EmployeeIds = company.Employees.Select(emp => emp.Id)
            })
            .ToListAsync()
            .ConfigureAwait(false);

Я искал то же самое, и после обращения к другим вопросам кажется, что это невозможно. Я понял, что сущность EF представлена ​​коллекцией его свойств, и, следовательно, загрузка отдельных значений не будет полностью определять сущность.

Чтобы загрузить только выбранные свойства, нам нужно использовать запрос Select вместо загрузки связанных данных. Запрос приведет к анонимному типу.

Примечание. Если результирующий тип содержит какую-либо сущность, изменения будут отслежены. См. Отслеживание и прогнозы

Рекомендации:

Другие вопросы по тегам