使用AutoMapper从列表向下映射到对象

我是新的AutoMapper,并有一个问题,我试图解决。

如果我有这样的源代码类:

public class Membership
{
    public int MembershipId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string OrganizationName { get; set; }
    public List<Address> Addresses { get; set; }
}

Address类如下所示:

public class Address
{
    public int AddressId{ get; set; }
    public int RefAddressTypeId { get; set; }
    public string AddressLine1 { get; set; }
    public string AddressLine2 { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string Zip { get; set; }
    public bool IsPreferredAddress { get; set; }
}

我的目的地是:

public class UserInformationModel
{
    public string UserName { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Organization { get; set; }
    public string EmailAddress { get; set; }
    public PhysicalAddress BillingAddress { get; set; }
    public PhysicalAddress ShippingAddress { get; set; }
}

目标地址类是:

public class PhysicalAddress
{
    public AddressType AddressType{get; set;}
    public string AddressLine1 { get; set; }
    public string AddressLine2 { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string PostalCode { get; set; }

}

我已经建立了这样的映射:

Mapper.CreateMap<MinistryMattersIntegration.BusinessObjects.Entities.Cokesbury.Membership, UserInformationModel>()
      .ForMember(dest => dest.Organization, opt => opt.MapFrom(src=>src.OrganizationName));

这是工作会员UserInformationModel,但现在我需要得到地址工作。 但是,需要注意的一点是,目标地址是单个帐单地址和单个送货地址,而在原始模型中,所有地址均以列表形式存储。 您从列表中找到运输和帐单地址的方式是查看RefAddressTypdId和IsPreferredAddress。 特定的RefAddressTypeId只能存在一个首选地址。

所以,我的问题是,你如何让AutoMapper做这种映射? 是否有可能,还是我更适合使用常规的映射代码?


您需要使用AutoMapper的自定义值解析器功能。 因此,您需要设置一个自定义解析器,使用IsPreferredAddress标志将您的列表映射到您的单个实体。

这些文档对于自定义分解器非常有用,所以你应该很好地从那里找出它。

链接地址: http://www.djcxy.com/p/37365.html

上一篇: Mapping from list down to object with AutoMapper

下一篇: AutoMapper with dynamic destination property