PersonRepository.cs
Код: Выделить всё
public PersonDto1 GetForSmallValidation()
{
return context.Persons.Select(x =>
new PersonDto1
{
Id = x.Id,
LastName = x.LastName,
}
);
}
public PersonDto2 GetActive()
{
return context.Persons
.Filter(x => x.Active)
.Select(x =>
new PersonDto2
{
Id = x.Id,
LastName = x.LastName,
FirstName = x.FirstName,
... // all fields
}
);
}
Вопрос:
Как вы обрабатываете запросы только определенных столбцов с помощью EF? Будь то с шаблоном репозитория или без него, вызывая dbcontext на уровне сервиса.
Мои предварительные решения и результаты исследований:
- В разделе «Эффективные запросы» я обнаружил, что мне нужен анонимный тип C#: return new { field1, field2 .
Проблема: вернуть динамический тип или как изменить методы? public Dynamic GetForSmallValidation() {.. - Я нашел в шаблоне репозитория общий метод Get, который поможет мне писать только один Get.
Проблема: как это интегрируется с моими несколькими Dtos (или анонимным типом C#)? Этот метод Get будет иметь общий объект базы данных Person, а методы возвращают PersonDto или анонимный тип. - Один Dto с обнуляемым значением для каждого поля даже не рассматривается. Я не могу проверить HasValue для каждого поля.
Подробнее здесь: https://stackoverflow.com/questions/791 ... yframework