В типичном приложении MVC у нас есть проверка, которая происходит во многих разных местах.Это может быть на стороне клиента, в контроллере, а затем снова на уровне данных.Если у вас есть бизнес-уровень, то там также есть дополнительная проверка.
Как мы объединяем все это, чтобы не нарушать DRY и не вызывать ночные кошмары поддержки при изменении проверок?Подвопрос заключается в том, как включить динамическую проверку на основе модели на всех уровнях.
Например: у нас может быть ViewModel, который имеет атрибуты аннотации данных.В MVC2 / 3 это объединяет проверку на стороне клиента и контроллера, но не помогает с моделью данных (если только вы не используете свою модель данных в качестве модели представления, что не является хорошей практикой).
Этоозначает, что вы должны добавить одинаковые проверки к модели данных и бизнес-уровням, дублируя их.Более того, модель данных может иметь несколько иные требования проверки, чем модель представления (например, целая запись данных может содержать несколько моделей представления многошагового мастера. И только полная запись может быть сохранена).
Некоторые люди добавляют сложную проверку в модель данных при использовании ORM, такого как EF или L2S с частичными классами, что я не уверен, что это правильный путь.Он работает для приложений, которые в первую очередь ориентированы на данные (приложения типа ввода данных), но не будет работать для приложений, которые имеют больше бизнес-логики, не связанной с данными.
Мне нужен какой-то способ генерирования проверки длявсе слои, или способ подключиться к единой системе проверки.Существует ли что-нибудь подобное?