Domain driven design 根聚合引用问题

Domain driven design 根聚合引用问题,domain-driven-design,Domain Driven Design,聚合中非根的实体可以保存对根聚合的引用。或者是根聚合只能保存对其子实体的引用。聚合中的实体可以保存对聚合根的引用 聚合中的实体也可以包含对其他外部聚合根的引用 外部对象不能包含对聚合内部实体的引用。外部对象只能引用聚合根,不能引用内部对象 应仅从查询/存储库返回聚合 聚合应创建为一个完整的集合,通常使用工厂。聚合中的实体可以包含对聚合根的引用 聚合中的实体也可以包含对其他外部聚合根的引用 外部对象不能包含对聚合内部实体的引用。外部对象只能引用聚合根,不能引用内部对象 应仅从查询/存储库返回聚合

聚合中非根的实体可以保存对根聚合的引用。或者是根聚合只能保存对其子实体的引用。

聚合中的实体可以保存对聚合根的引用

聚合中的实体也可以包含对其他外部聚合根的引用

外部对象不能包含对聚合内部实体的引用。外部对象只能引用聚合根,不能引用内部对象

应仅从查询/存储库返回聚合


聚合应创建为一个完整的集合,通常使用工厂。

聚合中的实体可以包含对聚合根的引用

聚合中的实体也可以包含对其他外部聚合根的引用

外部对象不能包含对聚合内部实体的引用。外部对象只能引用聚合根,不能引用内部对象

应仅从查询/存储库返回聚合


聚合应该创建为一个完整的集合,通常使用工厂。

我可以使用IOC创建聚合吗,我的意思是在ddd中可以使用IOC。在服务层而不是工厂中创建对象。复杂的问题。服务是应用程序中活动的来源,因此通常是最终导致对象创建的操作的来源。您必须将请求与创建对象的机制和责任(即实际构造代码本身)区分开来。没有什么比领域对象创建的知识更亲密或更详细的了,这是领域模型的一部分。因此,虽然服务可能需要创建对象,实际上,将创建代码放在服务层是在泄露领域层知识,并创建一个紧密耦合的服务层。您能否澄清外部对象的含义MVVM范例中的ViewModel是被视为外部对象,还是更具体地说是指领域层中的对象?我可以创建吗使用IOC聚合,我指的是在ddd中可以使用IOC的地方。在服务层而不是工厂中创建对象。复杂的问题。服务是应用程序中活动的来源,因此通常是最终导致对象创建的操作的来源。您必须将请求与创建对象的机制和责任(即实际构造代码本身)区分开来。没有什么比领域对象创建的知识更亲密或更详细的了,这是领域模型的一部分。因此,虽然服务可能需要创建对象,实际上,将创建代码放在服务层是在泄露领域层知识,并创建一个紧密耦合的服务层。您能否澄清外部对象的含义MVVM范例中的ViewModel是被视为外部对象,还是更具体地说是指领域层中的对象?