En utilisant Automapper (.net c #) à la carte à une variable non Src pour une utilisation dans les classes de linq2sql?

StackOverflow https://stackoverflow.com/questions/1318167

Question

J'utilise automapper ces derniers temps avec succès, mais je assez ai rencontré un petit problème pour cartographier la Dest à une variable pas disponible dans la Src .... Un exemple explique mieux .. En fait, je suis en correspondance d'dest à src selon les instructions .. tout fonctionne bien mais je dois carte maintenant une destination à une variable nommée qui est variable numéro de réservation locale ne fait pas partie de l'ordre ... quelqu'un sait comment faire ??

J'utilise automapper à la carte de l'ordre de réservation pour une utilisation dans linq2sql comme réservation est ma classe linq2sql.

Le petit exemple, je vous serais reconnaissant de toute 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);
Était-ce utile?

La solution

Essayez ceci:

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

Cette option MapFrom prend toute Func. Vos autres options seraient à la carte à un objet de destination existant, avec le numéro de réservation déjà là. Ou, utilisez un résolveur de valeur personnalisée (ResolveUsing), si vous avez besoin pour obtenir le numéro de réservation en utilisant un service personnalisé ou quelque chose.

L'appel CreateMap n'a besoin que de se produire une fois par AppDomain, vous pouvez vérifier les deux autres options et voir si elles correspondent à vos besoins.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top