tutorial mvc initialize inicializar example createmap c# automapper

c# - mvc - mapper initialize



Mapeo de niveles profundos utilizando Automapper (2)

Estoy tratando de asignar objetos con miembros de niveles múltiples: estas son las clases:

public class Father { public int Id { get; set; } public Son Son { get; set; } } public class FatherModel { public int Id { get; set; } public int SonId { get; set; } } public class Son { public int Id { get; set; } }

Así es como lo intento automap:

AutoMapper.Mapper.CreateMap<FatherModel , Father>() .ForMember(dest => dest.Son.Id, opt => opt.MapFrom(src => src.SonId));

Esta es la excepción que recibo:

La expresión ''dest => Convert (dest.Son.Id)'' debe resolverse en el miembro de nivel superior y no en las propiedades de ningún objeto secundario. Utilice un programa de resolución personalizado en el tipo secundario o la opción AfterMap en su lugar. Nombre del parámetro: lambdaExpression

Gracias


Esto funcionará tanto para la asignación a un objeto nuevo o existente.

Mapper.CreateMap<FatherModel, Father>() .ForMember(x => x.Son, opt => opt.MapFrom(model => model)); Mapper.CreateMap<FatherModel, Son>() .ForMember(x => x.Id, opt => opt.MapFrom(model => model.SonId));