Jak radzić sobie z odniesieniami cyklicznymi podczas mapowania?

Weźmy na przykład tę bazę danych

Pracownik

id - int (PK)nazwa - varchar

Wynagrodzenie

id - int (PK)employee_id - int (FK)kwota - pływak

Entity Framework wygeneruje modele podobne do tych:

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

Emplyee odwołuje się do listy swoich pensji, podczas gdy każda pensja wskazuje, który pracownik jest właścicielem. Powoduje to kolisty problem odniesienia.

Podążam za wzorcem repozytorium i używam AutoMappera do przeniesienia pracownika do EmployeeDTO i wynagrodzenia do SalaryDTO. Chcę, aby te DTO utrzymywały informacje o relacjach dzieci. Jednak nie chcę tego robić rekurencyjnie. Mogę zrobić coś takiego.

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

Ale to stanie się koszmarem konserwacyjnym.

Jak mogę powiedzieć AutoMapperowi, aby mapował tylko jednego podejrzanego lub osiągnął podobny cel?

questionAnswers(2)

yourAnswerToTheQuestion