如何让服务层在插入过程中管理多个存储库层

问题描述 投票:0回答:1

各位, 问题陈述如下: 背景:

  1. 应用程序收集用户信息,可以通过 AggregateA 和 AggregateB 建模;
  2. AggregateA 包含 AggregateB 的集合
  3. AggregateA/B 包含少量实体
  4. 应用程序先持久化 AggregateA,然后持久化 AggregateB(AggregateA 的主键用作持久化 AggregateB 的输入)

问题: 在服务层,有没有替代方案?

def add_user_info(varA, varB):
    A_ID = repoA.add(varA)
    repoA.commit()
    repoB.add(A_ID, varB)
    repoB.commit()    

在此插入中是否可以有一个提交?

domain-driven-design repository-pattern service-layer aggregates
1个回答
0
投票

考虑使用工作单元模式。


def add_user_info(varA, varB):
    A_ID = repoA.add(varA)
    repoB.add(A_ID, varB)
    uow.commit() 

这样,您还可以避免将所有过程变成单个操作的副作用,并且如果失败,repoA 不会在您的数据库中生成垃圾。

UoW 的示例这里

© www.soinside.com 2019 - 2024. All rights reserved.