2012-05-01 18 views
2

如何在DDD域模型中建立層次關係?在我的應用程序中,我有一個組織實體,組織可以有分區和分區,可以有子分區。嵌套深度是任意的。我應該如何設計我的實體和存儲庫?如何爲DDD中的遞歸關係建模

回答

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以瞭解如何存儲和查詢層次關係。