我一直在关注 Event Store 有一段时间了,让我感到难过的一件事是什么时候应该考虑编写投影?创建展平投影是常见的做法吗?
此处的设置使用每个聚合的流
例如,假设我有 2 个如下所示的事件:
public class OrderPlaced
{
public OrderPlaced(string reference, Currency currency, Amount amount)
{
...
}
public string Reference { get; }
public Currency Currency { get; } //Custom type
public Amount Amount { get; } //Custom type
}
public class OrderCompleted
{
public OrderCompleted(string reference)
{
this.Reference = reference;
}
public string Reference { get; }
}
我有以下查询:
fromCategory('MyCategory')
.whenAny(function(s, e) {
linkTo("Foo", e);
})
以上并没有做很多事情,只是将所有流聚合成一个单数。是否可以将更平坦的视图投影到例如这样的东西中?也许我的电线交叉但显然使用emit
可以实现这一点?
{
string Reference;
string CurrencyCode;
decimal PayingAmount;
}
我的想法是,一旦我写入流,我可以保证聚合处于有效状态,因此对于任何相关方,我应该只公开这些过程所需的字段。投影一个简单的模型(去规范化的视图)是正确的做法吗..
上面是一个简单的示例,但您可以想象聚合稍微复杂一些。
如果我遗漏了任何内容或需要进一步澄清,请发表评论,我可以添加。