2009-08-23 18 views
2

J'ai utilisé automapper assez récemment, mais j'ai rencontré un petit problème pour mapper le Dest à une variable qui n'est pas disponible dans le Src .... Un exemple l'explique mieux .. fondamentalement, je suis mappage de dest à src selon les instructions .. tout fonctionne bien mais je dois maintenant mapper une destination à une variable nommée reservationNumber qui est une variable locale qui ne fait pas partie de ORDER ... quelqu'un sait comment faire cela ?? J'utilise automapper pour mapper de la commande à la réservation pour linq2sql car Reservation est ma classe linq2sql.Utiliser Automapper (.net C#) pour mapper vers une variable qui n'est pas dans Src pour une utilisation dans les classes linq2sql?

Est le petit exemple, j'apprécierais n'importe quelle entrée.

string reservationNumber = "1234567890"; // this is the local variable.. It will be dynamic in future.. 

    Mapper.CreateMap<Order, Reservation>() 
      .ForMember(dest => dest.ReservationNumber, reservationNumber // THIS OBVIOUSLY FAILS) 
      .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.name)) 
      .ForMember(dest => dest.Surname1, opt => opt.MapFrom(src => src.surname1)) 
      .ForMember(dest => dest.Surname2, opt => opt.MapFrom(src => src.surname2)) 
      .ForMember(dest => dest.Email, opt => opt.MapFrom(src => src.email)) 
      .ForMember(dest => dest.Telephone, opt => opt.MapFrom(src => src.telephone)) 
    ; 
      // Perform mapping 
      Reservation reservation = Mapper.Map<Order, Reservation>(order); 

Répondre

3

Essayez ceci:

Mapper.CreateMap<Order, Reservation>() 
    .ForMember(dest => dest.ReservationNumber, opt => opt.MapFrom(src => reservationNumber)); 

Cette option MapFrom prend toute Func. Vos autres options consisteraient à mapper vers un objet de destination existant, avec le numéro de réservation déjà présent. Ou, utilisez un résolveur de valeur personnalisé (ResolveUsing), si vous avez besoin d'obtenir le numéro de réservation en utilisant un service personnalisé ou quelque chose. L'appel CreateMap ne doit se produire qu'une seule fois par AppDomain. Vous pouvez donc vérifier les deux autres options et voir si elles correspondent à vos besoins.

+0

Merci, jimmy travaille un régal! –