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

前端之家收集整理的这篇文章主要介绍了c# – 为DDD中的实体生成标识前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
编辑

为了进一步澄清我最初的问题,我用更多的’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.这是一个细节.还要记住,只有工厂的接口属于域层,而不是它的实现.

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

猜你在找的C#相关文章