【发布时间】:2017-05-18 00:05:21
【问题描述】:
我目前正在使用Domain Driven Design 概念设计和实现一个框架。
我正在尝试将Validation 放在域模型层中。
有时做验证需要访问数据库并查询它,例如:
"querying to check multiple column unique index"
关于这一点以及查询应该写在存储库层类中的事实,领域实体需要在域模型层中引用它们的存储库接口,以便将验证完全放在域中模型层。
我想知道域实体是否可以访问存储库?
如果不行的话,这种情况应该怎么处理呢?
我的意思是应该将此类验证方法移至repository 或Application Service 层吗?如果是,是否可以将验证方法移至这些层?
或者由于域服务可以访问存储库,我们是否应该在 domain model layer 中创建 domain services 以进行验证?
我们应该如何处理?
提前致谢
【问题讨论】:
-
@guillaume31 我认为这与您提到的问题不同,我编辑了我的问题并添加了更多细节。任何解决方案将不胜感激!
-
您需要检查哪些不变量?我们在谈论哪个聚合根,为什么验证这种唯一性是它的责任? “检查多列唯一索引”并不是一个域描述...
-
你的Q标题和我链接的Q一模一样
-
我正在尝试将验证放在域模型层中,以处理验证中有时可能发生的所有复杂性!例如,验证复杂的域服务(如生产线馈送),如果您知道的话,这是一个非常复杂的过程。检查唯一性只是需要查询的另一个条件。在这种情况下,您可能需要查询数据库,因此您需要访问它的存储库。
标签: architecture domain-driven-design ddd-repositories