如何在DDD域模型中建模层次关系?在我的应用程序中,我有一个组织实体,组织可以有分部,而分部又可以有子部门。嵌套深度是任意的。我应该如何设计我的实体和存储库?
答案 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以了解如何存储和查询层次关系。