Dotnet AutoMapper平面架构到复杂层次结构



我有一个结构非常扁平的数据库表。好吧,我想在返回到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();

最新更新