存储库与服务 - 订阅 - 两者?

时间:2011-03-30 23:08:32

标签: .net design-patterns domain-driven-design repository repository-pattern

假设我是公司的客户,该公司提供活动。

它有一个客户表和一个事件表。 对于订户。他们是一个订阅表(作为一个结点,有一个额外的属性:AccompountedByPartner)。

所以我有一个客户和活动的存储库。

但现在问题在于订阅。

订阅是否有用于添加,删除,修改和列出服务的Repostitory PerformJoinSubscription和PerformCancelSubscription? 或者只有服务吗?

1 个答案:

答案 0 :(得分:3)

要回答这些问题,请询问这个问题是否可以独立存在,或者它是否仅在其他方面有意义。没有客户和事件,订阅显然没有意义,因此不需要自己的存储库。在形式上,只有聚合根的实体才应该有存储库。

相反,在Event上提供一个Subscribe方法,该方法接受一个Customer参数(或Customer上的Join方法,该方法接受一个Event,具体取决于你喜欢的位置),并更新该关联的内部集合。保存修改后的实体时,您的存储库也应该将更改保存到相关对象。像Entity Framework这样的ORM会自动为您处理。