List 如何配置AutoMapper以展平1:n关系?
考虑两个实体类CD和Track:List 如何配置AutoMapper以展平1:n关系?,list,mapping,viewmodel,automapper,relation,List,Mapping,Viewmodel,Automapper,Relation,考虑两个实体类CD和Track: public class CD { public long Id {get; set;} public string Name {get; set;} public IList<Track> Tracks {get; set;} } public class Track { public long Id {get; set;} public string Name {get; set;} public
public class CD
{
public long Id {get; set;}
public string Name {get; set;}
public IList<Track> Tracks {get; set;}
}
public class Track
{
public long Id {get; set;}
public string Name {get; set;}
public CD CD {get; set;}
}
public class CDTrackModel
{
public long CdId {get; set;}
public string CdName {get; set;}
public long TrackId {get; set;}
public string TrackName {get; set;}
}
GUI应该与红色表格类似:
自动映射:
Mapper.CreateMap<CD, CDTrackModel>()
.ForMember(vm => vm.CDId, o => o.MapFrom(m => m.Id)
.ForMember(vm => vm.CDName, o => o.MapFrom(m => m.Name)
// How to map the Tracks ???
;
Mapper.CreateMap()
.ForMember(vm=>vm.CDId,o=>o.MapFrom(m=>m.Id)
.ForMember(vm=>vm.CDName,o=>o.MapFrom(m=>m.Name)
//如何绘制轨道图???
;
是否可以使用AutoMapper创建所需的映射?Jimmy的建议为我指明了正确的方向 为什么不将轨迹实体映射到CDTrackModel,而不是将CD实体映射到CDTrackModel 守则是:
Mapper.CreateMap<Track, CDTrackModel>()
.ForMember(vm => vm.TrackId, o => o.MapFrom(m => m.Id)
.ForMember(vm => vm.TrackName, o => o.MapFrom(m => m.Name)
.ForMember(vm => vm.CDId, o => o.MapFrom(m => m.CD.Id)
.ForMember(vm => vm.CDName, o => o.MapFrom(m => m.CD.Name)
;
Mapper.CreateMap()
.ForMember(vm=>vm.TrackId,o=>o.MapFrom(m=>m.Id)
.ForMember(vm=>vm.TrackName,o=>o.MapFrom(m=>m.Name)
.ForMember(vm=>vm.CDId,o=>o.MapFrom(m=>m.CD.Id)
.ForMember(vm=>vm.CDName,o=>o.MapFrom(m=>m.CD.Name)
;
如果没有AutoMapper,您将如何编写此代码?这给了我最好的指导。