Мне нужно создать файл Sitemap для автоматов в обоих направлениях?
Это может быть глупый вопрос! (n00b в AutoMapper и время-короткое!)
Я хочу использовать AutoMapper для сопоставления объектов EF4 классам ViewModel.
1) Если я вызываю
CreateMap<ModelClass, ViewModelClass>()
тогда мне также нужно вызвать
CreateMap<ViewModelClass, ModelClass>()
выполнить обратное?
2) Если два класса имеют одинаковые имена свойств, то мне нужен оператор CreateMap вообще или это только для "конкретных/пользовательских" сопоставлений?
Ответы
Ответ 1
В AutoMapper у вас есть тип источника и тип назначения. Таким образом, вы сможете сопоставить этот тип источника и тип назначения, только если у вас есть соответствующая CreateMap. Поэтому, чтобы ответить на ваши вопросы:
- Вам не нужно определять обратное сопоставление. Вы должны сделать это только в том случае, если собираетесь направить карту.
- Да, вам нужно вызвать CreateMap, чтобы указать, что эти типы являются отображаемыми, иначе будет вызываться исключение, когда вы вызываете
Map<TSource, TDest>
, сообщая вам, что сопоставление не существует между типом источника и назначения.
Ответ 2
Для информации людей, которые спотыкаются на этот вопрос. Кажется, теперь есть встроенный способ достижения обратного сопоставления путем добавления вызова .ReverseMap()
в конце вашей цепочки конфигурации CreateMap()
.
Ответ 3
Я использовал метод расширения, отображающий оба пути
public static IMappingExpression<TDestination, TSource> BothWays<TSource, TDestination>
(this IMappingExpression<TSource, TDestination> mappingExpression)
{
return Mapper.CreateMap<TDestination, TSource>();
}
использование:
CreateMap<Source, Dest>().BothWays();