|
2
|
| Dheeraj Kumar · 技术社区 · 7 年前 |
|
|
1
6
真正的问题是,您是从数据模型的角度来考虑这一点的,而不是从域模型的角度。您正在为每个表行创建一个命令,而您应该为每个业务想法创建一个命令。 例如,假设您正在编写一个零售系统,并为注册用户创建一个新订单,该订单有5行项目。从数据模型的角度来看,需要为订单发送1个create命令,为行项目发送5个create命令。应该做的是发送一个命令AddNewOrderCommand并让用户类处理它。然后,用户类方法创建新的订单数据库行和所有行项目。如何添加顺序(创建哪些行等)现在封装在它所属的方法中,而不是您的命令体系结构中。 您的应用程序是否使用域驱动设计?如果不是,你应该考虑它,因为它非常复杂的系统,如果你有数百个实体的机会是好的,这有资格作为一个复杂的系统。用DDD的说法,上面的用户被调用,聚合根、订单和行项目只是实体。您没有为实体创建命令,只为聚合根创建命令(请注意,类有时可以是聚合根,也可以是另一个聚合根中的普通实体。发生这种情况的原因以及如何处理超出了本问题的范围) 看看你的模型,找出那些没有意义的东西,除非它们属于其他东西。例如,上面示例中的行项目。在我的数据库中有一个与订单无关的行项目是没有意义的。因此,所有行项目都应按订单创建。拥有一个没有用户关联的订单也是没有意义的。因此,用户应该创建订单。然而,用户似乎是金字塔的顶端,因此它是聚合根,确实需要一个Create命令。 如果你分析你的领域,你会发现你不需要那么多的Create命令,所以问题就消失了。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |