2

我最近一直在非常成功地使用 automapper,但是我遇到了一个小问题,将 Dest 映射到 Src 中不可用的变量....一个例子更好地解释了它.. 基本上我是根据 dest 映射到 src说明 .. 一切正常,但我现在需要将目的地映射到名为 reservationNumber 的变量,该变量是局部变量,不是 ORDER 的一部分……有人知道该怎么做吗?

我正在使用自动映射器从订单映射到预留,以便在 linq2sql 中使用,因为预留是我的 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);
4

1 回答 1

4

试试这个:

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

该 MapFrom 选项采用任何 Func。您的其他选择是映射到现有的目标对象,预订号已经存在。或者,如果您需要使用自定义服务或其他方式获取预订号,请使用自定义值解析器(ResolveUsing)。

每个 AppDomain 只需要调用一次 CreateMap,因此您可能需要检查其他两个选项,看看它们是否符合您的需要。

于 2009-08-23T15:32:19.050 回答