如何在DDD中建模递归关系 [英] How to model recursive relationships in DDD

查看:52
本文介绍了如何在DDD中建模递归关系的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

How can i model a hierarchical relationship in a DDD domain model? In my app I have a Organization entity and organizations can have divisions and divisions in turn can have child divisions. The nesting depth is arbitrary. How should I design my entities and repositories?

推荐答案

一个简单的模型可能类似于:

A simple model could look something like:

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来实现存储库,请查看了解如何存储和查询层次关系.

There are other approaches as well depending on specific needs. If using an ORM such as NHibernate to implement repositories take a look at this to see how to store and query hierarchical relationships.

这篇关于如何在DDD中建模递归关系的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆