汇总或不汇总

时间:2020-03-22 17:38:00

标签: repository domain-driven-design

我有Useraggregate模型。我还计划创建WorkingHours对象。就像每个user每天都有自己的工作时间一样。 graphical user interface也将Useradd/remove/update隔开UserRepository小时,等等。我在考虑是否应该将所有操作放到与WorkingHours相关的WorkingHours model中?我将aggregate设为WorkingHoursRepository,并创建了单独的property,因此我可以将User放入id中,作为WorkingHoursWorkingHours的对象。我应该选择哪个选项?

我的想法是不要将user汇总起来,因为每组工作时间都属于特定的User,如果我认为正确地依赖于CRUD就无法生存它。我唯一的想法就是将其聚合并创建单独的存储库,这是因为具有更简洁的代码意味着不要将所有repository等放在同一WorkingHours中,但是我认为将其分离不是应该的事情我唯一的方法是将value object设为aggregate,而不是UserRepository,并使用 - name: google-cloud-key secret: secretName: pubsub-key containers: - name: my_container image: gcr.io/my_image_file volumeMounts: - name: google-cloud-key mountPath: /var/secrets/google env: - name: GOOGLE_APPLICATION_CREDENTIALS value: /var/secrets/google/key.json

1 个答案:

答案 0 :(得分:0)

您可以根据业务需求而不是根据如何保存来设计域模型。

在这种情况下,如果只能在Working Hours域中操作User,并且如果您认为User是唯一需要的集合,则不应将Working Hours设为骨料。也就是说,这不会阻止您以干净的方式将数据保存在数据存储中。存储数据的策略还很大程度上取决于您的数据存储类型。

例如,如果您使用SQL并将数据存储在多个表中,则可以CommitRollback整个事务。只要您坚持聚合只能通过根实体进行更新的概念,它的实现方式就不会与DDD绑定。

如果您使用的是Cosmos DB之类的No-SQL数据库,则可以选择加载或保存整个文档。在这种情况下,您将只处理User存储库。

希望这会有所帮助。