I'm having trouble mapping child classes in automapper, which I do from viewModel to model. Has anyone ever had this kind of problem? thank you very much I'll post the classes
public class ViewModelToDomainMappingProfile : Profile
{
public override string ProfileName
{
get { return "ViewModelToDomainMappings"; }
}
protected override void Configure()
{
Mapper.CreateMap<ClienteViewModel, Cliente>();
Mapper.CreateMap<ClienteViewModel, Endereco>()
.ForMember(dest => dest.Rua, m => m.MapFrom(a => a.Rua))
.ForMember(dest => dest.Numero, m => m.MapFrom(a => a.Numero))
.ForMember(dest => dest.CEP, m => m.MapFrom(a => a.Cep))
.ForMember(dest => dest.Bairro, m => m.MapFrom(a => a.Bairro))
.ForMember(dest => dest.CidadeId, m => m.MapFrom(a => a.CidadeId))
.ForMember(dest => dest.Cidade, m => m.MapFrom(a => Mapper.Map<ClienteViewModel, Cidade>(a)))
.ForMember(dest => dest.EstadoId, m => m.MapFrom(a => a.EstadoId))
.ForMember(dest => dest.Estado, m => m.MapFrom(a => Mapper.Map<ClienteViewModel, Estado>(a)));
}
}
}
Domain classes
public class Cidade
{
public Int64 CidadeId { get; set; }
public String CidadeNome { get; set; }
public Int64 EstadoId { get; set; }
public virtual Estado Estado { get; set; }
}
public class Cliente
{
public Int64 ClienteId { get; set; }
public String Nome { get; set; }
public String Email { get; set; }
public String Cpf { get; set; }
public String Rg { get; set; }
public String TelFixo { get; set; }
public String Celular { get; set; }
public Int64 EnderecoId { get; set; }
public virtual Endereco Endereco { get; set; }
}
//classe viewModel
public class ClienteViewModel
{
[Key]
public Int64 ClienteId { get; set; }
[Required(ErrorMessage = "Nome do cliente é obrigatório ")]
[MaxLength(150, ErrorMessage = "Máximo {0} caracteres")]
public String Nome { get; set; }
[Required(ErrorMessage = "CPF é obrigatório")]
[MaxLength(12)]
public String Cpf { get; set; }
[MaxLength(11)]
public String RG { get; set; }
[EmailAddress(ErrorMessage = "Preencha um E-mail válido")]
[DisplayName("E-mail")]
public String Email { get; set; }
public String Telefone { get; set; }
public String Celular { get; set; }
public Int64 EnderecoId { get; set; }
public Int64 EstadoId { get; set; }
public Int64 CidadeId { get; set; }
public String Rua { get; set; }
public String Cep { get; set; }
[DisplayName("Cidade")]
public String CidadeNome { get; set; }
public String Bairro { get; set; }
public String UF { get; set; }
public String Numero { get; set; }
public String Complemento { get; set; }
}