【发布时间】:2017-01-31 21:03:42
【问题描述】:
AggregateRoots 与孩子的一个方面对我来说不是 100% 清楚。 而且我也没有通过谷歌找到完整的例子。
假设我有一个 AggregateRoot “客户”。 一个客户可以有多个项目。
我已经了解到我只有一个 AggregateRoot“客户”并且项目没有 Root,到目前为止一切都很好。
public class Customer : AggregateRoot
{
private List<Project> _projects { get;set; }
public void AddProject(Guid id, string name, int budget)
{
?
}
}
我有几个小问题。
- 项目是聚合(只是没有根)还是只是 POCO 类?
- 对于应用状态以及在事件存储中保存什么很重要
- 我的业务规则是每个客户的项目都有一个唯一的名称。
- 此业务规则在客户内部还是项目内部?
- 我的命令是否具有名称“AddProject”并存在于 Customer 命名空间或“CreateProject”并存在于 Project 命名空间中,然后在后台加载客户聚合并在客户聚合上执行“AddProject”?
亲切的问候
【问题讨论】:
标签: c# cqrs event-sourcing aggregateroot