0

我发誓我以前做过,但我现在似乎无法让它工作。基本上我得到一个EndUser包含 a Site,我想将它映射Site到一个SiteInfo对象。

这是我的地图配置:

Mapper.CreateMap<Site, SiteInfo>()
    .ForMember(dest => dest.SiteID, opt => opt.MapFrom( src => src.ID))
    .ForMember(dest => dest.CompanyID, opt => opt.MapFrom(src => src.Company.ID));

Mapper.CreateMap<EndUser, SiteInfo>()                
    .ForMember( dest => dest, opt => opt.MapFrom(src => src.Site ));

所以EndUser.Site应该可以映射到SiteInfo。我可以通过调用在外面做到这一点Mapper.Map<SiteInfo>(EndUser.Site)。我认为直接从最终用户映射到位置信息只是更简洁的语法。

那么我怎样才能直接从EndUserto映射SiteInfo呢?基本上这是我想写的代码:

var user = mcp.Users.GetEndUser(userAddress.Address);
var siteInfo = Mapper.Map<SiteInfo>(user);

目前我正在通过EndUser.Site这样的映射来解决这个问题:

var user = GetEndUser(emailAddress);
            var siteInfo = user == null 
                            ? null as SiteInfo 
                            : Mapper.Map<SiteInfo>(user.Site);
4

1 回答 1

0

您想映射LocationSiteInfoLocationInfo吗?dest您在EndUser->映射中映射到的属性是什么SiteInfo?是否SiteInfo同时包含LocationEndUser属性?

没有这些信息,我只是猜测,但您是否正在尝试做这样的事情?

var rc = Mapper.Map<SiteInfo>(endUser);
rc = Mapper.Map(endUser.Location, rc);

更新

因此,如果我理解正确,您是否在进行这样的映射?

Mapper.CreateMap<EndUser, SiteInfo>()
    .ForMember(dest => dest.SiteID, opt => opt.MapFrom( src => src.Site.ID))
    .ForMember(dest => dest.CompanyID, opt => opt.MapFrom(src => src.Site.Company.ID));
于 2012-12-02T01:33:34.120 回答