小编Dav*_*d N的帖子

DDD中的唯一验证

我有一个关于检查DDD唯一性的问题.我知道在stackoverflow上已经有一些关于这个的问题,但它们并没有真正回答我的疑问

更新/插入数据库时​​,聚合根是否可以保存存储库的引用以检查唯一性?或者这是应用程序服务而不是域模型完成的任务?

假设我想在用户注册时检查用户模型的用户名是否唯一有几种我能想到的方法:

  • 用户模型引用UserRepository,在Validate()中进行唯一性检查
  • 创建域服务以使用UserRepository进行唯一性检查(这对我来说似乎有点奇怪,因为我认为通常只有在逻辑跨越多个域模型的情况下才使用域服务)
  • 在域层中创建规范对象,引用UserRepository来封装唯一的检查规则,应用服务层使用它来在更新/插入之前进行检查

如果我使用依赖注入,我仍然想知道如何在方法1中将UserRepository注入User,或者在方法2中注入域服务,或者在方法3中注入应用程序服务,因为在任何情况下,对于用户/域服务/规范对象,我需要手动实例化对象,所以我似乎唯一的选择是在IoC中使用服务定位器来获取实例.但服务定位器是一种反模式,所以我想避免它

任何示例代码将不胜感激

domain-driven-design dependency-injection specifications unique repository

10
推荐指数
1
解决办法
2415
查看次数