1) Есть ли какая-либо польза от использования структуры отображения кроме экономии кода, я получаю от его сопоставления по соглашению?
думаю. Это один из тех одноразовых вещей. Конечно, вы можете написать код вручную DTO с одного объекта на другой, возможно, примерно так же быстро, как вы можете создать все пользовательские правила сопоставления. Но второй раз, когда вы нуждаетесь в DTO, использование каркаса картирования оплачивается самим собой.
2) Разве еще проще настроить сопоставление для вышеуказанного сценария в структуре сопоставления и сопоставления вручную в этом случае? (. Это не похоже, как это)
Я думаю, что это примерно то же самое:
Mapper.CreateMap<EntityModel, ViewModel()
.ForMember(d => d.Prop1, o => o.MapFrom(s => s.Property1))
.ForMember(d => d.Prop2, o => o.MapFrom(s => s.Property2))
.ForMember(d => d.Prop3, o => o.MapFrom(s => s.Property3))
...
.ForMember(d => d.PropN, o => o.MapFrom(s => s.PropertyN))
;
С помощью этого отображения, весь код DTO будет выглядеть следующим образом:
var model = Mapper.Map<ViewModel>(entityInstance);
. ..versus ... Если вы DIT вручную, это выглядит примерно так же мне:
var model = new ViewModel
{
Prop1 = entityInstance.Property1,
Prop2 = entityInstance.Property2,
Prop3 = entityInstance.Property3,
...
PropN = entityInstance.PropertyN,
};
Другая интересная вещь о AutoMapper над Valuei njecter заключается в том, что вам нужно всего лишь определить 1 сопоставление, которое затем будет работать для отображения как отдельных экземпляров, так и коллекций.
var models = Mapper.Map<ViewModel[]>(entityInstances);
... против
var models = entityInstances.Select(new ViewModel
{
Prop1 = entityInstance.Property1,
Prop2 = entityInstance.Property2,
Prop3 = entityInstance.Property3,
...
PropN = entityInstance.PropertyN,
});
AutoMapper предназначен, чтобы избавиться от кода, который вы бы уже писать, применяя конвенции. Если нет схемы картографии, в чем смысл? Более того - насколько далеко эти модели? –
просто сделайте это вручную – Omu