¿Cómo se puede tratar con referencias circulares al mapear?
Tomemos esta base de datos por ejemplo
Empleado
id - int (PK)nombre - varcharSalario
id - int (PK)employee_id - int (FK)cantidad - flotarEntity Framework generará modelos similares a estos:
public partial class Employee
{
public Employee()
{
this.Salaries = new HashSet<Salary>();
}
public int id { get; set; }
public string name { get; set; }
}
public partial class Salary
{
public int id { get; set; }
public int employee_id { get; set; }
public float amount { get; set; }
public Employee employee { get; set; }
}
El Emplyee hace referencia a una lista de sus Salarios, mientras que cada Salario indica a qué empleado pertenece. Esto resulta en un problema de referencia circular.
Sigo un patrón de repositorio y uso AutoMapper para transferir Employee to EmployeeDTO y Salary a SalaryDTO. Quiero que esas DTO mantengan la información de sus relaciones con los niños. Sin embargo, no quiero hacer esto recursivamente. PODRÍA hacer algo como
public partial class EmployeeDTO
{
public EmployeeDTO()
{
this.Salaries = new HashSet<SalaryChildDTO>();
}
public int id { get; set; }
public string name { get; set; }
}
public partial class SalaryChildDTO
{
public int id { get; set; }
public float amount { get; set; }
}
Pero esto se convertiría en una pesadilla de mantenimiento.
¿Cómo puedo decirle a AutoMapper que solo asigne un solo decendiente, o que logre un objetivo similar?