Mat*_*ers 6 domain-driven-design repository
如果存储库在构建期间相互通信,是否违反了任何域驱动的设计原则?
用户地址存储库与城市/地区/国家/地区存储库对话以获取数据的示例?
cuo*_*gle 11
它违反了域驱动设计,我认为,存储库不应该相互引用.此外,您不应该在存储库与数据库表之间映射1:1.
这是观念Aggregate
和AggregateRoot
.例如,假设在数据库中有2个表:
Order
OrderLine
Run Code Online (Sandbox Code Playgroud)
对于关系1:n,(Order,OrderLine)被定义为聚合,因为没有Order,OrderLine不能独立生存.在这种情况下,Order是此聚合的根.
有了这个,而不是创建两个存储库:
OrderRepository
OrderLineRepository
Run Code Online (Sandbox Code Playgroud)
你只需要一个人OrderRepository
来处理整个聚合,使用级联加载,插入和删除OrderLine
因此,在您的情况下,应考虑您是否存在地址/城市/地区/国家/地区存储库.
希望这有帮助