Проверка объекта домена против проверки модели представления - PullRequest
8 голосов
/ 21 декабря 2010

Я использую ASP.NET MVC 3, и я использую FluentValidation для проверки моих моделей представлений. Я просто немного обеспокоен тем, что я могу быть не на правильном пути. Насколько я знаю, проверка модели должна выполняться на объекте домена. Теперь с MVC у вас может быть несколько похожих моделей, требующих проверки. Что происходит, если свойство объекта домена встречается в нескольких моделях представления? Теперь вы проверяете одно и то же свойство дважды, и они могут даже не синхронизироваться. Поэтому, если у меня есть объект домена пользователя, я бы хотел выполнить проверку этого объекта. Теперь, что произойдет, если у меня есть UserAViewModel и UserBViewModel, так что теперь необходимо выполнить несколько проверок.

В моем классе News у меня есть свойство с названием Title, которое является обязательным для заполнения. В моей модели представления у меня также есть свойство Title, я использую AutoMapper для сопоставления News и NewsViewModel. Так что эта проверка происходит дважды. Когда происходит проверка модели домена и когда происходит проверка модели представления?

Сценарий, приведенный выше, является лишь примером, поэтому, пожалуйста, не критикуйте его.

Ответы [ 2 ]

16 голосов
/ 21 декабря 2010

Это тонкое различие, но проверка в вашей модели представления заключается в проверке правильности ввода данных пользователем и формирует антикоррупционный слой для вашей доменной модели, тогда как «проверка» в вашей доменной модели обеспечивает соблюдение бизнес-правил. Это совершенно нормально, и вы должны пройти валидацию на обоих слоях. На самом деле, возможно, что UserAViewModel имеет немного отличную проверку ввода от UserBViewModel. Что касается вашего вопроса, обычно я стараюсь избегать выставления доменных объектов через мою ViewModel и вместо этого отображать между ними (часто используя что-то вроде AutoMapper), таким образом ваши ViewModel действительно являются слоями антикоррупции, а не мешками свойств моделей доменов. Надеюсь, это поможет.

1 голос
/ 21 декабря 2010

Что происходит, если свойство объекта домена встречается в нескольких моделях представлений?

Этого не должно быть.Просмотр моделей должен быть полностью отделен от вашего домена.

Отвечает ли это на ваш вопрос?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...