Jeśli chcę utworzyć mapowanie dwukierunkowe, czy muszę utworzyć dwa mapowania?Mapowanie dwukierunkowe AutoMapper
Mapper.CreateMap<A, B>() and Mapper.CreateMap<B, A>()
?
Jeśli chcę utworzyć mapowanie dwukierunkowe, czy muszę utworzyć dwa mapowania?Mapowanie dwukierunkowe AutoMapper
Mapper.CreateMap<A, B>() and Mapper.CreateMap<B, A>()
?
Tak, ponieważ jeśli zmienisz typ jakiejś właściwości (na przykład DateTime -> string), nie jest ona dwukierunkowa (musisz poinstruować program Automapper, jak konwertować ciąg -> DateTime).
Tak, ale jeśli znajdziesz się w ten sposób często:
public static class AutoMapperExtensions
{
public static void Bidirectional<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
{
Mapper.CreateMap<TDestination, TSource>();
}
}
następnie:
Mapper.CreateMap<A, B>().Bidirectional();
świetny pomysł Erica! Dodałem wartość zwracaną, więc odwrotne mapowanie jest również konfigurowalne.
public static class AutoMapperExtensions
{
public static IMappingExpression<TDestination, TSource> Bidirectional<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
{
return Mapper.CreateMap<TDestination, TSource>();
}
}
To jest teraz upieczony w AutoMapper
Mapper.CreateMap<SourceType, DestType>().ReverseMap();
Nie działa z niestandardowymi mapowaniami, tylko wtedy, gdy nazwy właściwości są takie same w obu klasach. –
ma sens, ale byłoby miło, że biblioteka próbował zrobić mapowanie jako konwencja, i można wyraźnie go wyłączyć, jeśli nie było pracujący. Na przykład, mapuję obiekty domeny, aby wyświetlać modele, a mapowanie dwukierunkowe będzie działało idealnie dla mnie. –