6
votes

Carte automapper d'un objet à des objets imbriqués


7 commentaires

Avez-vous le contrôle de la conception du DTOOBJECT?


Oui, et non ceci est une ancienne base de données à usage intensif.


Dans quelle direction essayez-vous d'aller, d'un objet DTO à un objet principal ou d'un objet principal à l'objet DTO?


Probablement meilleur à utiliser mapper.createmap (). Former (d => d.topobject, mc => mc.mapfrom (S => Nouveau sous-box () {SUBPROPTEXT = S.TOPTEXT, SUBPropFont = s.topfont}));


Notez également, dans votre CustomResolver, vous ne devez pas appeler mapper.map (), vous devez créer la sous-observation à l'aide des propriétés de la source et renvoyez cela.


Pourquoi ne pas appeler une sous-mappage qui prend l'objet de la même source et renvoie le sous-boje dont j'ai besoin?


Laissez-nous Continuer cette discussion en chat


3 Réponses :


3
votes

J'ai fini par créer mes propres résolveurs de valeur pour toutes les sous-observations de MainObject code> qui proviennent de dtoObject code>.

Mapper.CreateMap<DTOObject, SubObject>();

Mapper.CreateMap<DTOObject, MainObject>()
    .ForMember(dest => dest.SubPart, opt => opt.ResolveUsing<PartResolver<SubObject>>());


0 commentaires

9
votes

Pour moi, il était possible d'utiliser uniquement MapFrom (sans résoudre ce qui vous donne une chance d'utiliser ce mappage avec des extensions iquérissables). Donc, vous obtiendrez ce qui suit dans la configuration automapper:

Mapper.CreateMap<DTOObject, SubObject>()
    .ForMember(dest => dest.SubPropText, opt => opt.MapFrom(x => x.BottomText))
    .ForMember(dest => dest.SubPropFont, opt => opt.MapFrom(x => x.BottomFont));

Mapper.CreateMap<DTOObject, MainObject>()
    .ForMember(dest => dest.SubPart, opt => opt.MapFrom(x => x));


0 commentaires

1
votes

Résolatrice n'est pas disponible avec la dernière version de FadifPPER. Donc, seule l'option restante est d'utiliser Mapefrom . (Utilisez la solution @zeDroth).


0 commentaires