Какой тип возвращать при запросе нескольких объектов в слое Repository?

У меня есть следующие слои, вовлеченные в этот вопрос:

Сервисный уровень (использование IoC для вызова репозитория)Доменная модель (POCO / доменные объекты, определенные интерфейсы репозитория)Уровень репозитория (EF .edmx и реализованные репозитории)

Много раз этоЭто действительно просто: слой репозитория запрашивает базу данных через Entity Framework и возвращаетIList вызывающей стороне, которая была Service Layer.тип возвращается тип, определенный в модели предметной области.

Проблема яЯ сталкиваюсь с тем, когда мне нужно запросить через POCO A, B и C и получить данные из всего, что должно быть возвращено. Так как я неДля обработки любой логики в хранилище мне нужно вернуть эти данные обратно на уровень обслуживания для обработки (напрямую или, более вероятно, путем вызова некоторой логики в модели предметной области). Однако я нене иметьодин тип больше из результатов запроса к хранилищу, чтобы вернуться к вызывающей стороне.

Анонимный тип, конечно, обрабатывает это в примерах, которые я вижу, но так какЯ не обрабатываю эту логику из возвращаемых данных непосредственно в репозитории, и она должна быть возвращена, мне нужен физический тип для возврата. Вот некоторые решения, о которых я подумал, но не уверен, что они мне нравятся:

Создайте новую доменную сущность в доменной модели, которая, по сути, является композицией всех запрашиваемых мной данных, так что этот новый единственный тип может быть возвращен. Это кажется неправильным для создания аббревиатур для удовлетворения запросов.Сделайте так, чтобы сервисный уровень вызывал отдельные репозитории для объектов A, B, C по отдельности, а затем обрабатывал данные из каждого возвращаемого объекта. Это кажется большой дополнительной работой.Создайте ViewModel для возврата. Это кажется мне неуместным. Я активно использую классы ViewModel между своим сервисным уровнем и уровнями пользовательского интерфейса, но никогда не видел, чтобы они использовались для возврата из хранилища.

Я могу'Это не единственный запрос к нескольким объектам для получения конгломерата данных, которые необходимо добавить в тип и вернуть вызывающей стороне. Что является обычной практикой или стандартным способом решения этой проблемы?

Спасибо!

Ответы на вопрос(3)

Ваш ответ на вопрос