Код: Выделить всё
PersonRepository:
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
}
);
}
Вопрос: как вы обрабатываете запросы только к определенным столбцам с ЭФ? Будь то с шаблоном репозитория или без него, вызывая DbContext на уровне сервиса.
Мои предварительные решения и результаты исследований:
- В разделе «Эффективные запросы» я обнаружил, что мне нужен анонимный тип C#:
Проблема: вернуть динамический тип или как изменить методы?
Код: Выделить всё
return new { column1, column2 }
Код: Выделить всё
public dynamic GetForSmallValidation() {..}
- Я нашел в шаблоне репозитория общий метод Get, который поможет мне написать только один метод Get.
/>
Проблема: как это интегрируется с моими несколькими Dtos (или анонимным типом C#)? Этот метод Get будет иметь общий тип сущности базы данных Person, а методы возвращают PersonDto или анонимный тип. - Один Dto с обнуляемым значением для каждого поля даже не рассматривается. Я не могу проверить HasValue для каждого поля.
Подробнее здесь: https://stackoverflow.com/questions/791 ... -framework