映射时如何处理循环引用?

Plu*_*luc 5 asp.net-mvc entity-framework automapper

以此数据库为例

雇员

  • id - int(PK)
  • name - varchar

薪水

  • id - int(PK)
  • employee_id - int(FK)
  • 金额 - 浮动

实体框架将生成类似于以下的模型:

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; }
}
Run Code Online (Sandbox Code Playgroud)

Emplyee引用他的薪水清单,而每个薪水都指向他所拥有的员工.这导致循环参考问题.

我遵循存储库模式并使用AutoMapper将Employee转移到EmployeeDTO,将Salary转移到SalaryDTO.我希望这些DTO能够保持其儿童关系的信息.但是,我不想递归地这样做.我可以做类似的事情.

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; }
}
Run Code Online (Sandbox Code Playgroud)

但这将成为维护的噩梦.

如何告诉AutoMapper只映射一个单独的后代,或实现类似的目标?

Kas*_*sem 0

我不明白为什么这会是一场维护噩梦。我已经做同样的事情有一段时间了,它对我来说效果很好。但需要注意的一件事是,您仍然需要班级内的员工 ID SalaryChildDTO