Soy nuevo en AutoMapper y tengo un problema que intento resolver.Asignación de la lista al objeto con AutoMapper
Si tengo una clase de origen de la siguiente manera:
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; }
}
Y la clase de dirección se ve así:
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; }
}
Mi clase de destino es:
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; }
}
Y el destino clase de dirección es:
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; }
}
He establecido un mapeo:
Mapper.CreateMap<MinistryMattersIntegration.BusinessObjects.Entities.Cokesbury.Membership, UserInformationModel>()
.ForMember(dest => dest.Organization, opt => opt.MapFrom(src=>src.OrganizationName));
Esto es trabajar por la pertenencia al UserInformationModel, pero ahora tengo que conseguir direcciones de trabajo. Sin embargo, una cosa importante a tener en cuenta es que el destino es una sola dirección de facturación y una única dirección de envío, mientras que en el modelo original, todas las direcciones se almacenan como una lista. La forma en que encuentra las direcciones de envío y facturación fuera de la lista es mirando RefAddressTypdId y IsPreferredAddress. Solo puede existir una dirección preferida con un RefAddressTypeId particular.
Entonces, mi pregunta es, ¿cómo consigues AutoMapper para hacer este tipo de mapeo? ¿Es posible, o será mejor que vaya con el código de mapeo normal?
También tengo exactamente un problema similar. ¿Has encontrado la solución a tu problema? En caso afirmativo, ¿puedes compartirlo conmigo? No estoy familiarizado con CustomResolver. Si puede compartir algún ejemplo de su caso, sería muy útil. – Rupesh