我是一个新手,正在使用AutoMapper并遇到了一个问题。
如果我有一个像这样的源类:
我已经设置了这样一个映射:
这段内容是关于IT技术的翻译:
如果我有一个像这样的源类:
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));
这段内容是关于IT技术的翻译:
这个代码可以用于将Membership映射到UserInformationModel,但现在我需要让地址也能正常工作。需要注意的一点是,目标是单个账单地址和单个发货地址,而在原始模型中,所有地址都存储为列表。你可以通过查看RefAddressTypdId和IsPreferredAddress来找到列表中的发货和账单地址。每个RefAddressTypeId只能存在一个首选地址。
那么,我的问题是,如何让AutoMapper执行这种类型的映射?是否可能,还是我最好使用常规映射代码?