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

时间:2017-05-26 02:06:43

标签: c# .net domain-driven-design repository-pattern poco

这是我目前业务层的代码结构 -

  • UserManager(服务类)适用于用户(域对象)
  • CompanyManager(服务类)适用于公司(域对象)

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

  • IUnitOfWork - (使用IUserRepository,ICompanyRepository)

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

  1. 域对象是否应该没有依赖关系?在上面的例子中,如果“公司”上的某些操作应该触发“用户”的某些操作,那么公司对象是否可以依赖于UserManager呢?
  2. 如果域对象不应该有依赖关系,那么我应该在哪里保留这些逻辑?我应该在存储库中调用save方法,还是在'Company'上发生某些事情时调用UserManager?
  3. 谢谢!

1 个答案:

答案 0 :(得分:4)

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

在您的方案中,最好使用Domain Events

  1. 公司域名应该举办活动,例如“OnPolicyChanged”,应该在UserManager上监听此事件,管理员应该调用用户域中的域逻辑。

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