POCO / Domain 对象是否可以注入依赖项
Can POCO / Domain objects have dependencies injected to it
这是我当前的业务层代码结构 -
- UserManager(服务 class)在 User(域对象)上工作
- CompanyManager(服务 class)在公司(域对象)上工作
现在,我的两个域对象都依赖于
- IUnitOfWork -(使用 IUserRepository、ICompanyRepository)
我读过一些文章,其中说域对象不应该对存储库有任何依赖性。所以我的问题分为两部分 -
- 域对象是否不应有任何依赖关系?在上面的例子中,如果对 'Company' 的某些操作应该触发对 'User' 的某些操作,那么 Company 对象是否可以依赖于 UserManager?
- 如果领域对象不应该有依赖关系,那么我应该把那些逻辑放在哪里?我应该在哪里调用存储库上的保存方法,或者在 'Company' 发生某些事情时调用 UserManager?
谢谢!
在DDD中,领域层将是封装所有领域逻辑的最内层。建议不要在你的域中有任何依赖项 类.
在您的场景中,使用 Domain Events
是理想的选择
公司域应引发事件,例如"OnPolicyChanged",这个事件应该在 UserManager 上监听,管理器应该调用 User 域中的域逻辑。
在领域层中包含持久性逻辑并不理想。它应该处于更高级别,例如应将更改提交到数据库的 service/Infrastructure 层。
这是我当前的业务层代码结构 -
- UserManager(服务 class)在 User(域对象)上工作
- CompanyManager(服务 class)在公司(域对象)上工作
现在,我的两个域对象都依赖于
- IUnitOfWork -(使用 IUserRepository、ICompanyRepository)
我读过一些文章,其中说域对象不应该对存储库有任何依赖性。所以我的问题分为两部分 -
- 域对象是否不应有任何依赖关系?在上面的例子中,如果对 'Company' 的某些操作应该触发对 'User' 的某些操作,那么 Company 对象是否可以依赖于 UserManager?
- 如果领域对象不应该有依赖关系,那么我应该把那些逻辑放在哪里?我应该在哪里调用存储库上的保存方法,或者在 'Company' 发生某些事情时调用 UserManager?
谢谢!
在DDD中,领域层将是封装所有领域逻辑的最内层。建议不要在你的域中有任何依赖项 类.
在您的场景中,使用 Domain Events
是理想的选择公司域应引发事件,例如"OnPolicyChanged",这个事件应该在 UserManager 上监听,管理器应该调用 User 域中的域逻辑。
在领域层中包含持久性逻辑并不理想。它应该处于更高级别,例如应将更改提交到数据库的 service/Infrastructure 层。