如何在DDD中建模递归关系

时间:2012-05-01 12:11:43

标签: domain-driven-design

如何在DDD域模型中建模层次关系?在我的应用程序中,我有一个组织实体,组织可以有分部,而分部又可以有子部门。嵌套深度是任意的。我应该如何设计我的实体和存储库?

1 个答案:

答案 0 :(得分:4)

一个简单的模型可能看起来像:

public class Organization : Division 
{
  public Organization(string name)
    : base(name)
  {
  }
}

public class Division
{
  public Division(string name, Division parent = null)
  {
    this.Name = name;
    this.Parent = parent;
  }
  public string Name { get; private set; }
  public Division Parent { get; private set; }
  public ICollection<Division> Divisions { get; private set; }
  public Division AddDivision(string name)
  {
     var division = new Division(name, this);  
     this.Divisions.Add(division);
     return division;
  }
}

根据具体需要,还有其他方法。如果使用NHM等ORM来实现存储库,请查看this以了解如何存储和查询层次关系。