在域驱动设计(DDD)中,实体始终具有自己的唯一标识。
在我对DDD的阅读中,我看到的陈述和例子似乎混合了实体和聚合根之间的“唯一身份”概念。根据示例,它们可能意味着:
或
就“Eric Evans type DDD”而言,我想知道哪种方法是“正确的”。
例如,假设您的实体实现此接口并在调用此方法时返回GUID:
public interface IEntity
{
object IdThatIsUniqueForThisEntityObject { get; }
}
您是否也需要下面的那个?
public interface IAggregateRoot
{
object IdThatIsUniqueForThisAggregateRootObject { get; }
}
聚合根是否需要实现类似于上面的接口,以便它可以表示与其根实体的ID(IdThatIsUniqueForThisEntityObject)分开且不同的自己的唯一ID(IdThatIsUniqueForThisAggregateRootObject)?< / p>
或者Aggregate Root是否只使用根实体(IdThatIsUniqueForThisEntityObject)来表示聚合根的唯一ID?
答案 0 :(得分:2)
您只需要EntityId。没有创建额外的聚合根标识。聚合根是一种聚合,用于控制访问并将对象组织为单个数据库工作单元。聚合不会为对象赋予任何类型的“新”或附加标识。
实体始终拥有唯一的实体身份,这应该足够了。根据定义,检索作为聚合根的实体的操作也会在执行此操作时检索聚合。没有实体的概念,有时只是独立实体,有时是聚合根。因此,根本不需要“聚合根身份”的概念。