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();
我有一个结构非常扁平的数据库 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();