【问题标题】:Automapper two level mappingAutomapper 两级映射
【发布时间】:2014-06-30 00:38:49
【问题描述】:

我的 AutoMapper 配置有问题,我可以映射一个级别,但我不知道是否存在映射两个级别的方法

我有:

Class A 
{
    public int id {get; set;}
    public string nom {get; set;}
    public B Bprop {get; set;}
}

Class B
{
    public int id {get; set;}
    public string nom {get; set;}
    public C Cprop {get; set;}
}

Class C 
{
    public int id {get; set;}
    public string nom {get; set;}
}

我的配置代码如下,如果我从class B中删除Cprop,它就可以工作:

 MapperTools<DatabaseA, A> mapperToolsService =
     new MapperTools<DatabaseA, A>(MappingHelper);

 mapperToolsService.MappingConfig.Configuration.CreateMap<DatabaseA, A>()
     .ForMember(dest => dest.Bprop , opt => opt.MapFrom(src => src.DatabaseB));

 mapperToolsService.MappingConfig.Configuration.CreateMap<DatabaseB,B>();

请问,我的代码有什么问题?

【问题讨论】:

    标签: c# .net mapping automapper automapping


    【解决方案1】:

    其实这是三级映射。

    为 C 类添加映射,就像为 B 类添加映射一样。 扩展 B 类的映射以覆盖 Cprop。

    假设 DatabaseX 有 Xprop 字段对应于目标类(A、B、C)中的 Xprop 字段,它应该如下所示:

    Mapper.CreateMap<DatabaseA, A>()
      .ForMember(dest => dest.Bprop , opt => opt.MapFrom(src => src.Bprop));
    
    Mapper.CreateMap<DatabaseB,B>()
      .ForMember(dest => dest.Cprop , opt => opt.MapFrom(src => src.Cprop));
    
    Mapper.CreateMap<DatabaseC, C>();
    

    这是工作示例:https://github.com/st4hoo/Automapper3LevelMappingExample

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-23
      • 2018-02-01
      • 2022-01-26
      • 1970-01-01
      • 2020-07-17
      • 2012-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多