将共享 GUID 用作具有一对一关系的根聚合的聚合 ID 是否合理?
除了清晰之外,我没有立即看到任何理由。
例如,我有一个组织成员有界上下文,其核心关注聚合根是成员。会员聚合包含会员相关数据,以及对相关个人聚合(包含姓名、出生日期等)和网站用户(EF 身份)聚合的引用。
我最初的想法是做这样的事情,其中每个聚合根包含对相关聚合根的引用:
public class Member : AggregateRoot
{
Guid Id; // (Each aggregate ID is inherited)
Guid PersonId;
}
public class Person : AggregateRoot
{
Guid Id;
Guid UserId;
}
public class User : IdentityUser, IAggregateRoot
{
Guid Id;
}
获取会员的人是通过以下方式完成的:
var person = personRepository.GetById(member.PersonId);
然后我想到,如果我只是在成员、个人和用户名中使用相同的 ID,我可以“简化”事情,然后使用例如检索相关聚合:
var person = personRepository.GetById(member.Id)
这只是一个很小的区别,我最初对这个想法很满意,但现在变得谨慎起来。这是一个坏主意,因为它掩盖了关系?