このデータベースを例にとってみましょう
従業員
- id-int(PK)
- 名前-varchar
給料
- id-int(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は給与のリストを参照し、各給与は自分が所有する従業員を指します。これにより、循環参照の問題が発生します。
リポジトリパターンに従い、AutoMapperを使用して従業員をEmployeeDTOに転送し、給与を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に、単一の子孫のみをマップするように、または同様の目標を達成するように指示するにはどうすればよいですか?