如何从源属性映射到目标



我发誓我以前做过,但现在我似乎无法让它工作。 基本上我得到一个包含SiteEndUser,我想将该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).我认为从最终用户直接映射到位置信息只是更干净的语法。

那么如何直接从EndUser映射到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);

你想Location映射到SiteInfo还是LocationInfo?您在EndUser -> SiteInfo映射中映射到的dest属性是什么?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));

相关内容

  • 没有找到相关文章

最新更新