Проектирование репозитория MVC с использованием ViewModels

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

Вот несколько вопросов, которые у меня есть:

  1. Для такого метода, как GetAll(), я должен вернуть IQueryable<MyViewModel>или IQueryable<Entity>? Если я верну модели представления, как мне справиться с GetAll(), который извлекает тысячи записей?
  2. Должен ли я создавать конструктор для своего пользовательского класса ViewModel, который принимает Entity в качестве параметра для выполнения сопоставления? (Я все еще не знаком с automapper, поэтому мне просто нужно понять, как это сделать с точки зрения дизайна)

Опять же, меня больше всего беспокоит такой метод, как GetAll(), который вытянет много записей. Если бы я выполнял цикл foreach для перевода каждой сущности в ViewModel, это выглядело бы как много накладных расходов. Моя мысль заключалась в том, чтобы поместить ссылку внутри пользовательского класса ViewModel на IQueryable<Entity>для доступа из коллекции, а в ListViewModel просто были индексаторы или что-то в этом роде, которые ссылаются на свойство коллекции.

7
задан Michał Powaga 13 November 2013 в 16:51
поделиться