0
MVC scenario, where Controller talks to Application who talks to Domain.
I’m trying to map one to many 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; }
}
So is my Viewmodel: (they look identical to Model, but they are not. To simplify, I omitted the Dataannotations and Methods, as they are not relevant to the solution of the problem)
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 class "Model To Viewmodel" I tried to create the mapping like this:
CreateMap<Cidade, CidadeViewModel>()
.ForMember(vm => vm.Estado, opt => opt.MapFrom(m => m.Estado));
In the Obtencidadeporid method, I’m trying to return a Cidadeviewmodel:
return Mapper.Map<Cidade, CidadeViewModel>(CidadeRetornadaDoModel);
Where Citizenmade Model represents a City and all data of the related State, according to consultation:
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 Status property in Cidadeviewmodel is returning null. I believe the error is in the mapping (Createmap) in the class "Model To Viewmodel", but I can not solve the problem.