У меня есть следующие слои, связанные с этим вопросом:Какой тип, возвращаемый при запросе нескольких объектов на уровне репозитория?
- Service Layer (Использование IoC для вызова Repository)
- домена модели (ПОКО/Доменные Сущности, определенные хранилища интерфейсов)
- Repository Layer (EF. EDMX и внедренные хранилищами)
много раз это действительно прямо вперед: Repository слой запросов базы данных с помощью Entity Framework и возвращает IList<SomeDomainEntity>
абоненту, который был Service Layer. Возвращаемый тип - это тип, определенный в модели домена.
Проблема Я бегу в когда мне нужно запросить через Pocos A, B и C и получить данные из всех должны быть возвращены. Поскольку я не обрабатываю какую-либо логику в репозитории, мне нужно вернуть эти данные на обрабатываемый уровень сервиса (либо напрямую, либо, скорее, путем вызова некоторой логики в модели домена). Однако у меня нет одного типа больше из результатов запроса в хранилище, чтобы вернуться к абоненту.
Анонимный тип курса обрабатывает это в примерах, которые я вижу, но поскольку я не обрабатываю эту логику из возвращаемых данных непосредственно в репозитории, и ее нужно вернуть, мне нужен физический тип для возврата. Вот некоторые решения я думал, но не уверен, что я, как и любой:
- Создать новый объект домена в модели предметной области, которая по существу представляет собой композицию из всех данных я запрошенной, так что этот новый один тип может быть возвращен. Это кажется неправильным для создания абразивных типов для удовлетворения запросов.
- Сделайте слой обслуживания называют отдельные хранилища на лицах, A, B, C отдельно, а затем иметь дело с данными каждого возвращенного объекта. Это похоже на большую работу.
- Создать ViewModel, чтобы вернуться. Мне это тоже кажется неуместным. Я активно использую классы ViewModel между моим уровнем обслуживания и уровнями пользовательского интерфейса, но никогда не видел, чтобы они использовались для возврата из репозитория.
Я не могу быть единственным, кто обращается к нескольким объектам, чтобы получить конгломерацию данных, которые необходимо добавить к типу и вернуть вызывающему. Что такое обычная практика или стандартный способ решения этой проблемы?
Спасибо!
Я бы выбрал вариант 1. Создавайте представления на основе ваших запросов и сопоставляйте их с новыми моделями домена. – Romoku