Многоразовый запрос на получение с использованием EntityFrameworkC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Многоразовый запрос на получение с использованием EntityFramework

Сообщение Anonymous »

У вас есть одна таблица Person с 50 столбцами. Иногда вы хотите запросить 2 поля, иногда 10 полей и т. д. Затем вы используете выбор Entity Framework, чтобы получить из БД только необходимые столбцы для улучшения запроса.
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
}
);
}
Если в некоторых случаях использования требуются: дополнительный столбец, включение, фильтр, тогда мне нужен отдельный метод Get и Dto для каждого из них. Эти методы сложно повторно использовать и управлять ими. Я чувствую, что это плохая практика, и мне нужны дженерики или методы многократного использования. Когда я запрашиваю базу данных, я должен иметь возможность легко указать включения, определенные столбцы и фильтры из вызывающей службы.
Вопрос:
Как вы обрабатываете запросы только определенных столбцов с помощью 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
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Почему EntityFramework 6.1 работает лучше, чем EntityFramework Core 8, при простом запросе выбора? [закрыто]
    Anonymous » » в форуме C#
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • Почему EntityFramework 6.1 работает лучше, чем EntityFramework Core 8, при простом запросе выбора? [закрыто]
    Anonymous » » в форуме C#
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Многоразовый запрос на получение с использованием Entity Framework
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Многоразовый запрос на получение с использованием Entity Framework
    Anonymous » » в форуме C#
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • EntityFramework — содержит запрос составного ключа.
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

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