MVC scenario, where Controller talks to Application that talks to Domain.
I'm trying to do a one-to-many mapping with AutoMapper.
This is my Model:
public class Estado
{
public Guid EstadoId { get; set; }
public string Nome { get; set; }
public string Sigla { get; set; }
public string Capital { get; set; }
public virtual ICollection<Cidade> Cidades { get; set; }
}
public class Cidade
{
public Guid CidadeId { get; set; }
public string Nome { get; set; }
public Guid EstadoId { get; set; }
public virtual Estado Estado { get; set; }
}
public class EstadoViewModel
{
public Guid EstadoId { get; set; } = Guid.NewGuid();
public string Nome { get; set; }
public string Sigla { get; set; }
public string Capital { get; set; }
public virtual ICollection<CidadeViewModel> Cidades { get; set; }
}
public class CidadeViewModel
{
public Guid CidadeId { get; set; } = Guid.NewGuid();
public string Nome { get; set; }
public Guid EstadoId { get; set; }
public virtual EstadoViewModel Estado { get; set; }
}
In the Application in the "Model To ViewModel" class I tried to create the mapping like this:
CreateMap<Cidade, CidadeViewModel>()
.ForMember(vm => vm.Estado, opt => opt.MapFrom(m => m.Estado));
In the GetPorId method, I'm trying to return a CidadeViewModel:
return Mapper.Map<Cidade, CidadeViewModel>(CidadeRetornadaDoModel);
Where ReturnModel City represents a City and all related State data, query:
SELECT C.CidadeId, C.Nome, C.EstadoId, E.Nome, E.Sigla
FROM Cidades AS C
INNER JOIN Estados AS E
ON C.EstadoId = E.EstadoId
WHERE C.CidadeId = 1
Problem: The State property in CityViewModel is returning null. I believe the error is in the mapping (CreateMap) in the "Model To ViewModel" class, but I can not solve the problem.