IT干货网

c#之DDD,聚合根和实体

txw1958 2024年11月01日 编程设计 16 0

根据 DDD 原则,所有处理与特定聚合根对象相关的实体的 CRUD 操作都应该由聚合根进行。

但是我们如何从 aggr 根中仅更改实体的单个属性?我们应该在实体中有 setter 方法吗?这些方法应该有哪些访问器?

或者可能所有实体都应该有一个指向它们聚合根的引用?

或者我们永远不会只改变一个属性,而是用一个全新的实体代替当前的实体状态?

请您参考如下方法:

According to DDD principles all CRUD operations working with entities related to a specific aggregate root object should be made by the aggregate root.



是的;您可以将聚合根视为 role interface这限制了应用程序如何操作模型。

But how do we change only a single property of an Entity from the aggr root? Should we have setter methods in Entities and what accessors should these methods have ?



聚合是由多个实体组成的事实是一个实现细节。因此,在角色界面背后,您可以以任何您喜欢的方式委派更改的责任。

理想情况下,如果您正在对领域模型中的实体更改进行建模,那么应该有描述更改的通用语言中的相应词汇表。换句话说,就像我们使用业务语言来描述对聚合根所做的更改一样,我们也使用相同的语言来描述对模型中实体的更改。

因此,“CRUD”操作往往是操纵其自身状态的实体的内部实现细节。当您发现自己需要获取/设置或创建/读取/更新/删除时,这暗示您正在从域模型过渡到数据模型。

Or we never change only a single property but replace the entity with a totally new one instead with the current entity state?



这可能表明您正在对应该对值进行建模的实体建模。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!