C# 命令处理程序应该包含服务还是服务包含命令?

C# 命令处理程序应该包含服务还是服务包含命令?,c#,.net,asp.net-mvc,domain-driven-design,cqrs,C#,.net,Asp.net Mvc,Domain Driven Design,Cqrs,我试图遵循CQRS模式,但我不知道谁应该包含谁。我应该在命令处理程序上注入应用程序服务,还是相反 这是一个例子。我正在向命令处理程序注入服务。并在CreatProductCategoryCommandHandler的执行方法中使用服务 public CreateProductCategoryCommandHandler(ICategoryService categoryService) { _categoryService = categoryService; } 或者,当我有命令处理

我试图遵循CQRS模式,但我不知道谁应该包含谁。我应该在命令处理程序上注入应用程序服务,还是相反

这是一个例子。我正在向命令处理程序注入服务。并在CreatProductCategoryCommandHandler的执行方法中使用服务

public CreateProductCategoryCommandHandler(ICategoryService categoryService)
{
    _categoryService = categoryService;
}
或者,当我有命令处理程序时,我甚至需要服务吗?

在您的定义中,“服务”是什么


通常,服务(例如域服务、应用程序服务)在没有命令处理程序的情况下工作,而命令处理程序需要服务来处理命令。因此,需要将服务注入到命令处理程序中,而不是相反。

ah,好的。FWIW,IMO命令处理程序实际上是应用程序服务。那么你的意思是我只是在重复工作?有其他类别的服务吗?另一个问题是,我应该在哪里将更改提交到数据库。[在实体框架中,调用命令处理程序或类别服务中的SaveChanges()]来详细说明我的问题。我应该将我的更改提交到命令处理程序(injectiunitofwork)中的数据库还是引用了IUnitOfWork的类别服务中?是的,我会这么说(重复工作)。我们的命令处理程序从数据库/存储库加载实体,调用实体上的相应方法,然后再次将更改持久化到数据库中。(如果您不熟悉Java EE/EJB,
handle
函数是事务边界(应用程序容器在调用
handle
之前启动事务,并在
handle
返回时提交事务)