Wie können Sie beim Mapping mit Zirkelverweisen umgehen?

Nehmen Sie zum Beispiel diese Datenbank

Mitarbeiter

id - int (PK)name - varchar

Gehalt

id - int (PK)employee_id - int (FK)betrag - float

Entity Framework generiert Modelle, die den folgenden ähneln:

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

Der Emplyee verweist auf eine Liste seiner Gehälter, während jedes Gehalt darauf verweist, welchen Mitarbeiter er besitzt. Dies führt zu einem Zirkelbezugsproblem.

Ich folge einem Repository-Muster und verwende AutoMapper, um Employee an EmployeeDTO und Salary an SalaryDTO zu übertragen. Ich möchte, dass diese DTOs Informationen über die Beziehungen ihrer Kinder erhalten. Ich möchte dies jedoch nicht rekursiv tun. Ich könnte so etwas tun.

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

Aber dies würde ein Alptraum für die Instandhaltung werden.

Wie kann ich AutoMapper anweisen, nur einen einzelnen Nachkommen zuzuordnen oder ein ähnliches Ziel zu erreichen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage