加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 为DDD中的实体生成标识

发布时间:2020-12-15 08:36:45 所属栏目:百科 来源:网络整理
导读:编辑 为了进一步澄清我最初的问题,我用更多的’DDD’ – 终点,常见模式和讨论论点重写了这个问题.原始版本可以在revisions下找到. Where and how are identities for entities / aggregate roots being generated inside the domain when correctly applying
编辑

为了进一步澄清我最初的问题,我用更多的’DDD’ – 终点,常见模式和讨论论点重写了这个问题.原始版本可以在revisions下找到.

Where and how are identities for entities/aggregate roots being generated inside the domain when correctly applying DDD?

我需要在创建或持久时为我的实体分配唯一标识.这些身份可以有多种风格

>计算(基于实体的特征,因此基于业务要求)
>自然(基于一组规则,因此基于业务逻辑)
>代理(基于随机生成的值,没有商业意义)

生成和分配身份的任务有很多种方法,从使用工厂创建身份,使用ORM授权到基础设施或数据库生成等.但是,如果正确应用DDD,身份应该在何处以及如何生成,考虑到我们不希望贫血领域模型和服务注入实体?

上述要求

>没有贫血领域模型
>不将服务依赖注入实体

可能的方法

>工厂
>双重调度(这可以用于身份生成吗?)
>内部生成
>内部基础设施的生成(例如ORM或数据库)
>将注入服务转化为实体

解决方法

我会把它放在一个工厂里.在我看来,生成id不应该是域逻辑的一部分,因为它确实是一个基础设施问题.您可以从DB获取id或使用uuid或其他任何内容生成id.这是一个细节.还要记住,只有工厂的接口属于域层,而不是它的实现.

关于你对工厂的疑虑,如果你使用工厂创建实体,那么你应该在任何地方使用它.我就是这样做的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读