2012-05-01 9 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を参照してください。

関連する問題