我有User
个aggregate
模型。我还计划创建WorkingHours
对象。就像每个user
每天都有自己的工作时间一样。 graphical user interface
也将User
与add/remove/update
隔开UserRepository
小时,等等。我在考虑是否应该将所有操作放到与WorkingHours
相关的WorkingHours model
中?我将aggregate
设为WorkingHoursRepository
,并创建了单独的property
,因此我可以将User
放入id
中,作为WorkingHours
到WorkingHours
的对象。我应该选择哪个选项?
我的想法是不要将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
。
答案 0 :(得分:0)
您可以根据业务需求而不是根据如何保存来设计域模型。
在这种情况下,如果只能在Working Hours
域中操作User
,并且如果您认为User
是唯一需要的集合,则不应将Working Hours
设为骨料。也就是说,这不会阻止您以干净的方式将数据保存在数据存储中。存储数据的策略还很大程度上取决于您的数据存储类型。
例如,如果您使用SQL并将数据存储在多个表中,则可以Commit
或Rollback
整个事务。只要您坚持聚合只能通过根实体进行更新的概念,它的实现方式就不会与DDD绑定。
如果您使用的是Cosmos DB
之类的No-SQL数据库,则可以选择加载或保存整个文档。在这种情况下,您将只处理User
存储库。
希望这会有所帮助。