我正在使用CQRS开发应用程序。而且我遇到了一些我有点困惑的情况。
我有一个命令CreateUser。现在我必须创建命令ImportUsers。我猜这些命令的目的很明确。所以有两种选择:
什么是最佳做法?先感谢您。
答案 0 :(得分:1)
你把你的逻辑放在错误的地方,这就是造成问题的原因。命令旨在成为域逻辑的协调者。换句话说,他们在域中调用适当的方法来完成他们的工作,他们不会自己完成。
创建单个用户的逻辑属于每个这些方法调用的工厂。工厂应该有一个CreateUser方法接受所有数据作为参数,或者如果有大约5个左右的参数,我接受一个DTO,我认为有。使用工厂创建用户,两个命令的唯一区别是ImportUsers将在循环中调用工厂的CreateUser方法。
检查this posting有关命令背后的想法。如果您正在使用DDD,请阅读Udi Dahan's post,了解所有对象创建应该如何在某个聚合某处的方法中。