0

ここしばらく Event Store を見てきましたが、1 つ困惑したのは、いつプロジェクションの作成を検討すべきかということです。平らな投影を作成するのは一般的な方法ですか?

ここでの設定では、集約ごとにストリームを使用しています

たとえば、次のような 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;
}

私の考えでは、ストリームに書き込んだら、集約が有効な状態であることを保証できるため、利害関係者に対しては、これらのプロセスが必要とするフィールドのみを公開する必要があります。単純なモデル (正規化されていないビュー) を投影することは正しいことです..

上記は些細な例ですが、集計がもう少し複雑であることが想像できます。

私が何かを見逃した場合、またはさらに明確にする必要がある場合は、コメントしてください。追加できます.

4

1 に答える 1