Каждая статья, найденная в Интернете по использованию ViewModels и использующая Automapper, дает рекомендации по направлению "Controller → View". Вы берете модель домена вместе со всеми Select Lists в один специализированный ViewModel и передаете его в представление. Это ясно и прекрасно.
Представление имеет форму, и в конечном итоге мы находимся в действии POST. Здесь все связки модели выходят на сцену вместе с [очевидно] другой View Model, которая [очевидно] связана с исходным ViewModel, по крайней мере, в части соглашений об именах для привязки и проверки.
Как вы сопоставляете его с моделью домена?
Пусть это будет действие вставки, мы могли бы использовать тот же Automapper. Но что, если это было актом обновления? Мы должны получить нашу доменную сущность из репозитория, обновить ее свойства в соответствии со значениями в ViewModel и сохранить в репозитории.
ДОБАВЛЕНИЕ 1 (9 февраля 2010 г.): Иногда присвоение свойств модели недостаточно. Должны быть предприняты некоторые действия против модели домена в соответствии со значениями View Model. I.e., некоторые методы следует вызывать в доменной модели. Вероятно, должен быть какой-то слой Application Service, который стоит между контроллером и доменом, чтобы обрабатывать View Models...
Как организовать этот код и где его разместить для достижения следующих целей?
- держать контроллеры в тонком
- честь Практика SoC
- следовать принципам проектирования, основанным на доменах.
- быть сухим
- Продолжение следует...