¿Cómo se puede tratar con referencias circulares al mapear?

Tomemos esta base de datos por ejemplo

Empleado

id - int (PK)nombre - varchar

Salario

id - int (PK)employee_id - int (FK)cantidad - flotar

Entity 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?

Respuestas a la pregunta(2)

Su respuesta a la pregunta