代码之家  ›  专栏  ›  技术社区  ›  blockhead

聚合根目录如何删除其子目录之一?

  •  2
  • blockhead  · 技术社区  · 15 年前

    order.removeOrderLine(23);
    

    我是否应该将OrderLine作为OrderRepository的方法移除?

    1 回复  |  直到 15 年前
        1
  •  4
  •   Tomas    15 年前

    您的工作单元通常应该注意这一点,但这取决于它的实现,特别是它检测更改的方式。某些工作单元实现(即Hibernate)在您更改聚合之前保留聚合的副本,因此在业务事务结束时(当您调用类似unitOfWork.PersistAll()的内容时),它会尝试将所有对象(和集合)的当前版本与原始版本相匹配。

    另一种方法是让您的域实体与您的工作单元更紧密地结合在一起,以便实体在发生更改时通知工作单元(即order.removeOrderLine方法将通知工作单元有关更改)。