0
respostas

Erro Mapeamento

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?