【问题标题】:Designing domain model issue设计领域模型问题
【发布时间】:2014-02-20 16:13:43
【问题描述】:

首先感谢您对此问题的意见。我是领域驱动设计的新手,并且正在努力解决一些问题(我认为它们非常基础,我肯定会遗漏一些东西)。

让我先描述一下我的领域。我正在尝试模拟一所典型的学校,它可以有教室,每个教室可以有多个部分/小组,并且每个教室小组中的学生。 用户主要是学校管理员和教师。学校管理员可以创建教室、教师和学生,而教师只能创建组并将学生分配到一个组。 学校有全球身份,但教室没有。当教室是学校实体的一部分时,它具有本地身份。课堂组仅在课堂内是唯一的。

School 绝对是一个 Aggregate 根,里面有 Classroom 聚合,负责创建、删除、更新教室。

  1. 我们是否应该为课堂和课堂组创建不同的聚合根(我认为这不正确,因为它们在域内没有全局身份)。
  2. 我们是否为它们各自创建单独的存储库?
  3. 我们是否应该在服务级别处理教室、教室组的创建/更新?
  4. 我们需要缓存数据,事件溯源似乎是保持状态同步的好主意。您认为这有什么问题吗?

任何帮助将不胜感激。

【问题讨论】:

    标签: domain-driven-design


    【解决方案1】:
    1. 我认为您应该创建一个 Classroom 聚合根。您可能会在一些报告中列出教室,对吗?
    2. 仅适用于聚合根。根的子节点由父聚合根存储库获取。
    3. 没有。如果您使用实体框架,您只需在 Class 对象列表中添加一个 Classroom 组即可。 EF 应该负责其余的工作。不过要小心删除!
    4. 如果您说的是http://martinfowler.com/eaaDev/EventSourcing.html,它不只是一种跟踪更改的方式吗?

    【讨论】:

    • 感谢您的回复。您是否认为我也应该为课堂组创建聚合根。我没有使用 EF,因此如果我有不同的存储库可能会有所帮助。我认为事件溯源是一个我可以实际处理所有更改以正确反映在缓存对象中的地方。如果您能对此有所了解,那就太好了。
    • 您好,抱歉耽搁了。课堂小组在课堂范围之外是否有任何意义?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多