以这个数据库为例
员工
- id - 整数 (PK)
- 名称 - varchar
薪水
- id - 整数 (PK)
- employee_id - int (FK)
- 金额 - 浮动
Entity Framework 将生成类似于以下的模型:
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 引用他的 Salary 列表,而每个 Salary 都指向他拥有的员工。这会导致循环引用问题。
我遵循存储库模式并使用 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; }
}
但这将成为维护的噩梦。
我如何告诉 AutoMapper 只映射一个后代,或实现类似的目标?