为DDD中的实体生成标识
编辑
为了进一步澄清我最初的问题,我用更多的’DDD’ – 终点,常见模式和讨论论点重写了这个问题。 可以在修订版本中找到原始版本。
在正确应用DDD时,在域内生成实体 / 聚合根的身份的位置和方式?
我需要在创建或持久化时为我的实体分配唯一标识。 这些身份可以有多种风格
有许多方法可以生成和分配身份,从使用工厂创建身份,使用ORM授权到基础设施或数据库生成等。但是,如果正确应用DDD,身份应该在何处以及如何生成,考虑到我们不希望贫血领域模型和服务注入实体 ?
要求如上所述
可能的方法
我会把它放在一个工厂里。 在我看来,生成id不应该是域逻辑的一部分,因为它确实是一个基础设施问题。 您可以从DB获取id或使用uuid或其他任何方式生成它。 这是一个细节。 还要记住,只有工厂的接口属于域层,而不是它的实现。
关于您对工厂的疑虑,如果您使用工厂创建实体,那么您应该在任何地方使用它。 我就是这样做的。
Vaughn Vernon实施域驱动设计的作者主张在这样的存储库中创建唯一的ID:
public TenantId nextIdentity() { return new TenantId(UUID.randomUUID().toString().toUpperCase()); }
TenantId
是一个包装实体标识的值对象。
上述就是C#学习教程:为DDD中的实体生成标识分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/952994.html