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 を使用してリポジトリを実装する場合は、これを見て、階層関係を格納およびクエリする方法を確認してください。

于 2012-05-01T16:49:44.433 に答える