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

c# – 我应该在DDD中进行独特的检查?

发布时间:2020-12-15 03:47:51 所属栏目:百科 来源:网络整理
导读:我正在开发我的第一个DDD项目,我认为我了解实体,数据访问对象及其关系的基本角色.我有一个基本的验证实现,将每个验证规则与其关联实体存储.这适用于仅适用于当前实体的规则,但在需要其他数据时会分解.例如,如果我有一个限制,一个用户名必须是唯一的,我希望Is
我正在开发我的第一个DDD项目,我认为我了解实体,数据访问对象及其关系的基本角色.我有一个基本的验证实现,将每个验证规则与其关联实体存储.这适用于仅适用于当前实体的规则,但在需要其他数据时会分解.例如,如果我有一个限制,一个用户名必须是唯一的,我希望IsValid()调用返回false当有一个现有的用户当前的名称.

但是,我没有找到任何干净的方式来保持该实体本身的验证规则.我想在实体上有一个IsNameUnique函数,但大多数解决方案要求我注入一个用户数据访问对象.这个逻辑应该在外部服务中吗?如果是这样,我还如何保持实体本身的逻辑?还是这个应该在用户实体之外的东西?

谢谢!

解决方法

在DDD中,有一个名为 aggregate的概念.它基本上负责应用程序中的一致性.

IMHO,在这种情况下,具体来说,我猜CustomerRepository会像“客户聚合”一样,是Customer类的聚合根.

然后,root将负责完成所有这些操作,没有其他人可以访问CustomerRepository选项.还有一些可能性:

>如果名称不唯一,则CustomerRepository可能会引发异常(并且客户将捕获并返回错误或类似的错误)> CustomerRepository可能有一个IsValidUserName(),客户在执行任何其他操作之前将调用它>你可以想到的任何其他选项

(编辑:李大同)

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

    推荐文章
      热点阅读