1

Был здесь некоторое время, но это мой первый вопрос @ так.Хорошо вернуть Viewmodel из хранилища?

Сценарий: Сайт Mvc. Viewmodels для большинства страниц. Каждая модель содержит модели или iqueryables, полученные из разных репозиториев.

Каждый источник часто обновляется (из-за пределов соски сайта), поэтому даже если кеширование локально, будет много ударов данных.

Проблема, с которой мы сталкиваемся, заключается в том, что при создании модели с использованием более одного репозитория каждый из них запускает соединение/выборку в источник данных (если им необходимо повторно заполнить).

Этого можно было бы легко избежать, вернув полную топологию из хранилища. Тогда репозиторий может использовать одно соединение (в большинстве случаев даже с одной хранимой процедурой sql) для извлечения всех необходимых данных.

Кто-то отметил, что в репозиториях не должны быть задействованы режимы просмотра. На самом деле я не вижу никаких проблем с этим, поэтому мой вопрос заключается в том, что может быть результатом?

+0

Непонятно, что вы на самом деле спрашиваете. Вы упоминаете страницы, это веб-сайт? MVC? (без тегов). – Nik

+0

Да, сайт mvc, но вопрос в том, что может/должно быть возвращено из шаблона репозитория. Как заголовок вопроса указывает - можно ли возвратить viewmodel из репозитория? – Simon

ответ

1

С MVC нет жестких и быстрых правил - вы всегда должны делать все, что вписывается в ваш конкретный сценарий. Необычно возвращать полные модели просмотра из уровня репозитория, но если заполнять его, это особенно интенсивный набор действий, который может быть упрощен в одной хранимой процедуре, а затем почему бы и нет.

Всегда существует вероятность того, что метод извлечения данных обзора повторяет код, который у вас есть в другом месте, и, следовательно, противоречит DRY, что приведет к потенциальным проблемам обслуживания позже.

Если вы обнаружите, что для извлечения всех данных, которые необходимы для одной страницы, требуется несколько вызовов в несколько разных хранилищ, это говорит о том, что ваши хранилища, возможно, не смоделированы достаточно, чтобы соответствовать вашим требованиям, и это может быть лучшим местом для просмотра уменьшая количество соединений/выборки базы данных.

+0

Да, это примерно так же, как и я. Я приму этот ответ, спасибо. – Simon