Dotnet AutoMapper 平面模式到复杂层次结构

Dotnet AutoMapper Flat schema to complex hierarchy

我有一个结构非常扁平的数据库 table。好吧,一旦结果查询返回到 dotnet 中的对象,我想将其创建为结构化和层次化程度更高的格式。为此,我创建了几个模型 类 来表示我希望如何组织返回的数据。例子

平面对象

Public class FlatObject {
   public string key1 {get; set;}
   public string key2 {get; set;}
   public string key3 {get; set;}
   public string key4 {get; set;}
}

结果对象

public class ResultObject {
   public Category1 category1 {get;set;}
   public Category2 category2 {get;set;}
   public Category3 category3 {get;set;}
}

类别示例

public class Category1 {
   public SubCategory1 sCategory1 {get;set;}
}

子类别

public class SubCategory1 {
   public string key1 {get;set;}
}

你会注意到在这个层次结构中有一些深层对象,我正在尝试将键从 falt 对象映射到这些深层嵌套的对象。我已经尝试过 AutoMapper,但我正在努力映射这么深的对象。对如何实现这一目标有任何见解吗?

要展开一个对象,首先要创建一个反方向的映射,即展开。然后,添加 ReverseMap() 就可以了:

CreateMap<ResultObject, FlatObject>()
    .ForMember(
        d => d.key1,
        o => o.MapFrom(s => s.category1.sCategory1.key1))
    .ForMember(
        d => d.key2,
        o => o.MapFrom(s => s.category2.sCategory2.key2))
    .ForMember(
        d => d.key3,
        o => o.MapFrom(s => s.category3.sCategory3.key3))
    .ForMember(
        d => d.key4,
        o => o.MapFrom(s => s.category4.sCategory4.key4))
    .ReverseMap();