如何配置AutoMapper以展平1:n关系?

时间:2011-08-23 10:41:08

标签: list mapping viewmodel automapper relation

考虑两个实体类 CD 跟踪

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;}
}

考虑 CDTrackModel

public class CDTrackModel
{
    public long CdId {get; set;}
    public string CdName {get; set;}
    public long TrackId {get; set;}
    public string TrackName {get; set;}
}

GUI应该像红色表一样: CDTRACKMODEL

自动映射映射:

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 ???
;

是否可以使用AutoMapper创建所需的映射?

1 个答案:

答案 0 :(得分:1)

吉米的建议指出了我正确的方向......

为什么不将跟踪实体映射到 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)
;