【问题标题】:Automapper - ReverseMap() does not perform mappingAutomapper - ReverseMap() 不执行映射
【发布时间】:2015-11-06 06:41:37
【问题描述】:

我有以下两个课程:

public class ReferenceEngine
{
    public Guid ReferenceEngineId { get; set; }
    public string Description { get; set; }
    public int Horsepower { get; set; }
}

public class Engine
{
    public Guid Id { get; set; }
    public string Description { get; set; }
    public int Power { get; set; }
}

我正在使用 automapper 执行从 ReferenceEngine 到 Engine 的映射,反之亦然。请注意,属性 ReferenceEngineId/IdHorsepower/Power 没有相同的名称。

以下映射配置有效,不同名称的属性映射成功:

public static void ConfigureMapperWorking()
{
    AutoMapper.Mapper.CreateMap<ReferenceEngine, Engine>()
        .ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.Description)).ReverseMap();

    AutoMapper.Mapper.CreateMap<ReferenceEngine, Engine>()
        .ForMember(dest => dest.Id, opt => opt.MapFrom(src => Guid.Parse(src.ReferenceEngineId.ToString())))
        .ForMember(dest => dest.Power, opt => opt.MapFrom(src => src.Horsepower));

    AutoMapper.Mapper.CreateMap<Engine, ReferenceEngine>()
        .ForMember(dest => dest.ReferenceEngineId, opt => opt.MapFrom(src => Guid.Parse(src.Id.ToString())))
        .ForMember(dest => dest.Horsepower, opt => opt.MapFrom(src => src.Power));
}

但是,尽管我最后调用了 ReverseMap() 方法,但以下内容不起作用:

public static void ConfigureMapperNotWorking()
{
    AutoMapper.Mapper.CreateMap<ReferenceEngine, Engine>()
        .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.ReferenceEngineId))
        .ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.Description))
        .ForMember(dest => dest.Power, opt => opt.MapFrom(src => src.Horsepower)).ReverseMap();
}

我的问题是,当属性名称不同时,我们应该手动指定 TSource->Tdestination 和 Tdestination->TSource 映射吗?我认为ReverseMap 的目的是避免我们手动指定双向映射。

【问题讨论】:

    标签: c# automapper


    【解决方案1】:

    ReverseMap 只创建一个简单的反向映射。例如它会自动配置

    Mapper.CreateMap<Engine, ReferenceEngine>();
    

    来自

    Mapper.CreateMap<ReferenceEngine, Engine>();
    

    要获得更复杂的东西,您必须手动配置它。

    【讨论】:

      猜你喜欢
      • 2012-11-09
      • 1970-01-01
      • 2021-05-20
      • 1970-01-01
      • 2020-05-19
      • 2022-11-27
      • 2021-09-17
      • 2018-11-15
      • 2016-04-13
      相关资源
      最近更新 更多