POCO / Domain对象是否可以注入依赖项

sha*_*h.g 2 .net c# domain-driven-design poco repository-pattern

这是我当前用于业务层的代码结构-

  • UserManager(服务类)适用于User(域对象)
  • CompanyManager(服务类)适用于Company(域对象)

现在,我的两个域对象都依赖于

  • IUnitOfWork-(使用IUserRepository,ICompanyRepository)

我读过一些文章,其中说域对象不应该对存储库有任何依赖性。所以我的问题分为两个部分-

  1. 域对象是否不应该具有任何依赖关系?在上述情况下,如果对“公司”的某些操作应该触发对“用户”的某些操作,那么公司对象可以依赖UserManager吗?
  2. 如果域对象不应该具有依赖性,那么我应该在哪里保留这些逻辑?当“公司”发生问题时,应在哪里调用存储库中的save方法,或调用UserManager?

谢谢!

ash*_*hin 5

在DDD中,域层将是封装所有域逻辑的最内层。建议您的域类中不要有任何依赖项。

在您的方案中,使用域事件是理想的

  1. 公司域应引发一个事件,例如“ OnPolicyChanged”,并且应在UserManager上侦听此事件,并且经理应在User域中调用域逻辑。

  2. 在您的域层中包含持久性逻辑不是理想的。它应该处于更高的级别,例如,服务/基础结构层应将更改提交到数据库。