0

以前にやったことは誓いますが、今はうまくいかないようです。基本的に、EndUserを含むものを取得していて、それをオブジェクトSiteにマップしたいと思います。SiteSiteInfo

これが私のマップ構成です:

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);
4

1 に答える 1

0

またはにマップLocationしますSiteInfoLocationInfo? ->マッピングdestでマッピングしているプロパティは何ですか? とプロパティの両方の組み合わせが含まれていますか?EndUserSiteInfoSiteInfoLocationEndUser

その情報がなければ推測にすぎませんが、このようなことをしようとしていますか?

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 に答える