J'ai un objet complexe comme: Je veux mapper ceci sur le type plat: p> J'ai déjà configuré de sorte que le test suivant passe: p> Mais lorsque j'essaie de cartographier automapper code> pour
TradingDesk code>: p>
businessunit code> à
rangée code> je dois reconfigurer
automapper code> pour
tradingdesk code> En tant que tel: P>
CreateMap<BusinessUnit, Row>()
.ForMember(vm => vm.TradingDeskName, op => op.MapFrom(src => src.TradingDesk.Name))
.ForMember(vm => vm.TraderFirstName, op => op.MapFrom(src => src.TradingDesk.Trader.FirstName))
.ForMember(vm => vm.TraderLastName, op => op.MapFrom(src => src.TradingDesk.Trader.LastName));
3 Réponses :
La syntaxe réelle peut différer car j'utilise automapper de manière statique, mais le principe reste le même:
Mais je n'ai pas d'instance code> imapper code> créée à partir de la configuration là-bas; Donc, votre code souffle avec AutomApperMappingException code>
En regardant Cet article , vos options pourraient être limitées si vous ne comptez pas sur le mappeur statique
Tout d'abord, je pense que votre carte pour le bureau de trading serait juste si la mémoire me sert à droite, car votre membre de destination correspond à un nom de membre source quand ". ' sont supprimés alors vous n'avez pas besoin de spécifier explicitement. p> Si vous modifiez la classe de votre ligne vers cette p> Votre carte serait p> Si vous n'allez jamais mapper vers TradingDesk, supprimez cette carte. p> Si ceci est défini dans un profil, vous pouvez également dire P> < Pré> xxx pré> Et puis vous n'avez pas besoin de changer de classe de ligne. p> p>
Si vous ne souhaitez pas créer de convertisseurs spéciaux ou de résolveurs de propriété, vous pouvez effectuer le deuxième mappage après la carte de l'objet principal, par exemple: dans ce cas, l'objet a été mappé sans créer une nouvelle instance. P> p>