2009-08-23 2 views
2

私はautomapperを最近正常に使用していますが、私はSrcで利用可能ではない変数にDestをマッピングするための小さな問題に遭遇しました....例はそれをよく説明します..基本的に私はdestからsrcへのマッピングですすべての作業はうまくいっていますが、今は予約先の変数を予約変数に割り当てる必要があります。これはローカル変数で、ORDERの一部ではありません。Automapper(.net c#)を使用して、linq2sqlクラスで使用するためにSrcにない変数にマップしますか?

私はlinq2sqlでの使用のために注文から予約へのマッピングにautomapperを使用しています。予約は私のlinq2sqlクラスです。

小さな例ですが、私は入力を感謝します。

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); 

答えて

3

これを試してみてください:MapFromオプションはどんなのFuncを取る

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

こと。あなたの他の選択肢は、予約番号が既に存在する既存の目的地オブジェクトにマップすることです。カスタムサービスなどを使用して予約番号を取得する必要がある場合は、カスタム値リゾルバ(ResolveUsing)を使用します。

CreateMapコールは、AppDomainごとに1回だけ実行する必要があるため、他の2つのオプションをチェックして、ニーズに合っているかどうかを確認してください。

+0

ありがとう、ジミーは治療をします! –

関連する問題