Boa noite, criei um exemplo de um setor que tem várias equipes:
public class Equipe
{
[Key]
public int Id { get; set; }
public string ?Nome { get; set; }
public int SetorId { get; set; }
public virtual Setor ?Setor { get; set; }
}
public class Setor
{
[Key]
public int Id { get; set; }
public string ?Nome { get; set; }
public int LiderId { get; set; }
public virtual Voluntario ?Lider { get; set; }
public virtual ICollection<Equipe> ?Equipes { get; set; }
}
E tenho o meu controller que lista as equipes:
[HttpGet]
public IEnumerable<ExibirEquipeRecord> BuscarEquipes([FromQuery] int skip = 0, [FromQuery] int take = 20)
{
IEnumerable<Equipe> equipes = _context.Equipes
.OrderBy(e => e.Nome).Skip(skip).Take(take).ToList();
return _mapper.Map<List<ExibirEquipeRecord>>(equipes);
}
O meu dto que usei o record está assim...
public record ExibirEquipeRecord(int Id, string Nome, string Setor) { }
Quando vou exibir o postman as equipes, estão vindo dessa maneira...
[
{
"id": 5,
"nome": "Cantina",
"setor": "Castle.Proxies.SetorProxy"
},
{
"id": 3,
"nome": "Estacionamento",
"setor": "Castle.Proxies.SetorProxy"
},
{
"id": 2,
"nome": "Limpeza",
"setor": "Castle.Proxies.SetorProxy"
},
{
"id": 4,
"nome": "Recepção",
"setor": "Castle.Proxies.SetorProxy"
},
{
"id": 1,
"nome": "Segurança",
"setor": "Castle.Proxies.SetorProxy"
}
]
E o meu Profile está dessa forma...
public class EquipeProfile : Profile
{
public EquipeProfile()
{
CreateMap<CadastrarEquipeRecord, Equipe>();
CreateMap<AtualizarEquipeRecord, Equipe>();
CreateMap<Equipe, ExibirEquipeRecord>()
.ForMember(record => record.Setor, options => options.MapFrom(equipe => equipe.Setor.Nome));
}
}
Já fiz o debug e vi que o setor de cada equipe está sendo buscado no controller, porém alguma coisa no meu Record está dando errado e o Mapper não está mapeando o nome do setor, pois se eu colocar para exibir o setor, vai entrar em um loop, por isso quero apenas o nome do setor que aquela equipe pertence, alguém saberia me dizer o que pode estar havendo?