Usando AutoMapper (.net c #) para mapear a uma variável não em Src para uso em aulas de Linq2Sql?

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

Pergunta

Eu tenho usado AutoMapper muito sucesso ultimamente, mas eu vim através de um pequeno problema para mapear o Dest a uma variável não um disponível no Src .... Um exemplo explica melhor .. Basicamente eu estou mapeamento a partir dest para src, conforme as instruções .. tudo funcionando bem, mas eu preciso agora mapear um destino para uma variável chamada reservationNumber que é variável local não faz parte da ordem ... alguém sabe como fazer isso ??

Eu estou usando AutoMapper para mapear de forma a reserva para uso em linq2sql como reserva minha classe linq2sql.

O pequeno exemplo, eu gostaria de receber qualquer entrada.

    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);
Foi útil?

Solução

Tente isto:

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

Essa opção MapFrom toma qualquer Func. Suas outras opções seria mapear a um objeto de destino existente, com o número de reserva já está lá. Ou, use um resolvedor valor personalizado (ResolveUsing), se você precisa para obter o número de reserva usando um serviço personalizado ou algo assim.

A chamada CreateMap só deve acontecer uma vez por AppDomain, de modo que você pode querer verificar as outras duas opções e ver se eles se encaixam às suas necessidades.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top