Csharp/C#教程:为DDD中的实体生成标识分享


为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

(0)
上一篇 2021年11月18日
下一篇 2021年11月18日

精彩推荐