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.

Las propiedades incluidas retornan nulo.

Tengo una tabla llamada employee:

public class Employee
{
public int Id { get; set;}
public int SupervisorId {get; set;}
public int EmployeeStatusId{ get; set; }
public EmployeeStatus EmployeeStatus{ get; set; }
}

EmployeeStatus:

public class EmployeeStatus
{
public int Id { get; set; }
public string Name { get; set; }
}

Hay un EmployeeStatusDto que es igual que la clase base y EmployeeDto:

public class EmployeeDto
{
public int Id { get; set; }
public int SupervisorId {get; set;}
public int StatusId { get; set; }
public string StatusName { get; set; }
}

AutoMapperConfig:

cfg.CreateMap<employee, employeedto=””>()
.ForMember(e => e.StatusId, m => m.MapFrom(p => p.EmployeeStatus.Id))
.ForMember(e => e.StatusName, m => m.MapFrom(p => p.EmployeeStatus.Name));

Y obteniéndolo fuera de la clase de contexto en el servicio:

employees = await _context.Employees.Where(x => x.SupervisorId == supervisorId).Include(x => x.EmployeeStatus).ToListAsync();
List result = _mapper.Map<>>(employees);

El problema que tengo es que StatusName y StatusId son nulos:

Qué me estoy perdiendo ahí?</employee,>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Podría haber varias razones por las cuales StatusName y StatusId están nulos en los objetos EmployeeDto resultantes:

    1. Verificar que el objeto EmployeeStatus sea incluido en la consulta inspeccionando el código SQL generado. Podría ser posible que el objeto EmployeeStatus no esté siendo cargado en memoria con el objeto Employee.
    2. Verificar que el objeto EmployeeStatus tenga valores para las propiedades Id y Name para cada objeto Employee en el resultado de la consulta. Si el objeto EmployeeStatus es nulo o no tiene valores para esas propiedades, AutoMapper no podrá mapearlos a las propiedades correspondientes en el objeto EmployeeDto.

    3. Verificar que la configuración de AutoMapper sea correcta y que el mapeo esté siendo realizado como se espera. Podría ser posible que haya un error o un typo en la configuración, o que el mapeo no esté siendo aplicado correctamente.

    Una vez que haya identificado el problema, puede hacer los cambios necesarios para asegurarse de que las propiedades StatusName y StatusId sean correctamente pobladas en los objetos EmployeeDto resultantes.

Comments are closed.