«Принятый путь», как правило, лучше всего подходит для вас.
Я никогда не слышал об AutoMapper, и когда я посмотрел на него, я понял, что он создает отображение магических объектов, следуя определенному соглашению.
Скринкаст по адресу: http://www.dnrtv.com/default.aspx?showNum=155
Примечание: я смотрел только половину этого скринкаста, поэтому мои мысли по поводу AutoMapper несколько неполны.
Лично я не хочу использовать его, потому что он требует, чтобы я написал дополнительный код для сопоставления / «выравнивания» между свойствами объекта (код, IMO, лучше оставить в логике конструктора). В примере скринкаста этот код обычно помещается в методы действий контроллера, что может привести к вздутию живота. (Мне нравятся узкие контроллеры / действия)
Я использую метод, который вы дали в своем посте, чтобы конструктор модели взял объект и выполнил всю работу.
Кроме того, я всегда создаю пустой конструктор, который не принимает параметров, чтобы я мог вручную устанавливать значения свойств объекта ViewModel.
Пример:
CustomViewModel myModle = new CustomViewModle
{
Property1 = "Something",
Property2 = 3,
//etc..
};
Подводя итог, попробуйте оба способа и посмотрите, что работает для вас. AutoMapper - отличная идея, и я вижу, что он помогает во многих ситуациях, однако я думаю, что в некоторые моменты, когда вы его используете, вы будете писать столько же кода, используя его, если будете использовать конструкторы объектов.