Como você pode lidar com referências circulares ao mapear?

Tome este banco de dados por exemplo

Empregado

id - int (PK)nome - varchar

Salário

id - int (PK)employee_id - int (FK)quantidade - flutuar

O Entity Framework gerará modelos semelhantes a estes:

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; }
}

O Emplyee faz referência a uma lista de seus salários, enquanto cada salário aponta para qual empregado ele é dono. Isso resulta em um problema de referência circular.

Eu sigo um padrão de repositório e uso o AutoMapper para transferir Employee para EmployeeDTO e Salary para SalaryDTO. Eu quero que esses DTOs mantenham informações sobre seus relacionamentos com crianças. No entanto, eu não quero fazer isso de forma recursiva. Eu poderia fazer algo assim.

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; }
}

Mas isso se tornaria um pesadelo de manutenção.

Como posso dizer ao AutoMapper para mapear apenas um único decendente ou atingir um objetivo semelhante?

questionAnswers(2)

yourAnswerToTheQuestion