2

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

4

1 回答 1

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

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

于 2012-05-01T16:49:44.433 回答