【发布时间】:2017-09-12 06:48:27
【问题描述】:
我的 CQRS 应用程序有一些复杂的域对象。创建时,实体的所有属性都是由用户直接指定的,所以
CreateFooCommand 有大约 15 个属性。
FooCreatedEvent 因此也有 15 个属性,因为我需要读取端的所有实体属性。
由于命令参数必须分派给域对象,而 FooCreatedCommand 不应传递给域,
有一个从 CreateFooCommand 到域的手动映射。
由于域应该创建域事件,
这是从域 Foo 属性到 FooCreatedEvent 的另一个映射。
在读取方面,我使用 DTO 来表示 Foo 的结构,因为它存储在我的读取模型中。
因此更新读取端的事件处理程序引入了另一种从事件参数到 DTO 的映射。
为了实现一个简单的业务案例,我们有
- 两个冗余类
- 三个基本相同属性的映射
我想过摆脱命令/事件参数并推送 DTO 对象,但这意味着域可以接收或创建 DTO 并将其分配给事件。
顺序:
REST Controller --Command+DTO--> Command Handler --DTO--> Domain --(Event+DTO)--> Event Handler
关于减少 CQRS 实施痛苦的任何想法?
【问题讨论】:
标签: c# domain-driven-design cqrs