如果实体成为聚合的根,聚合根是否使用根实体的现有ID或AR是否创建自己的ID?

时间:2011-05-22 22:35:43

标签: design-patterns domain-driven-design aggregateroot

在域驱动设计(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?

1 个答案:

答案 0 :(得分:2)

您只需要EntityId。没有创建额外的聚合根标识。聚合根是一种聚合,用于控制访问并将对象组织为单个数据库工作单元。聚合不会为对象赋予任何类型的“新”或附加标识。

实体始终拥有唯一的实体身份,这应该足够了。根据定义,检索作为聚合根的实体的操作也会在执行此操作时检索聚合。没有实体的概念,有时只是独立实体,有时是聚合根。因此,根本不需要“聚合根身份”的概念。