es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

AutoMapper no está mapeando la lista de objetos hijo.

Tengo un objeto padre (marca) con una lista de 5 objetos hijos (campaña):

Brand response = await _brandRepository.GetAsync(request.Id);
//other properties mapped fine, but Campaign is null..
var result = _mapper.Map<branddto>(response);
return result;

Tengo estas definiciones para el mapeo:

CreateMap<domain.entity.campaign, campaigndto="">();
CreateMap<domain.entity.brand, branddto="">();

Objetos:

public class BrandDto
{
public int Id { get; set; }
public string Name { get; set; }
public List<campaigndto> Campaign { get; set; }
}
public class CampaignDto
{
public int Id { get; set; }
public int? ParentCampaignId { get; set; }
public int BrandId { get; set; }
public CampaignDto ParentCampaign { get; set; }
public BrandDto Brand { get; set; }
}

Entidades:

public class Brand : SqlEntityBase
{
public string Name { get; set; }
public List<campaign> Campaign { get; set; } = new List<campaign>();
}
public class Campaign : SqlEntityBase
{
public int? ParentCampaignId { get; set; }
public int BrandId { get; set; }
public Guid ImpressionId { get; set; }
public string Name { get; set; }
public EntryStatus Status { get; set; }
public DateTime? StartDate { get; set; }
public DateTime? EndDate { get; set; }
public DateTime CreatedOn { get; set; }
public Brand Brand { get; set; }
public Campaign ParentCampaign { get; set; }
}

Si mapeo el objeto hijo manualmente, funciona bien, pero no es la manera correcta. ¿Cómo puedo hacerlo de manera adecuada?</domain.entity.brand,></domain.entity.campaign,>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que la propiedad Campaign en la entidad Brand no se está asignando correctamente a la propiedad CampaignDto en BrandDto.

    Para solucionar esto, debes agregar una configuración de asignación para la propiedad Campaign en la entidad Brand a la lista CampaignDto en BrandDto.

    Aquí te mostramos un ejemplo de cómo hacerlo:

    CreateMap<domain.entity.campaign, campaigndto="">();
    CreateMap<domain.entity.brand, branddto="">()
        .ForMember(dest => dest.Campaign, opt => opt.MapFrom(src => src.Campaign));
    

    El método ForMember toma dos parámetros: el primero es la propiedad de destino (en este caso, la lista CampaignDto en BrandDto), y el segundo es una expresión que especifica cómo asignar la propiedad origen (en este caso, la lista Campaign en la entidad Brand) a la propiedad de destino.

    Con esta configuración en su lugar, el Mapper debería ser capaz de asignar automáticamente la lista Campaign en la entidad Brand a la lista CampaignDto en BrandDto.

    ¡Espero que esto ayude!</domain.entity.brand,></domain.entity.campaign,>

Comments are closed.