使用事件存储客户端 API (.NET),如何写入流并将一个事件链接到另一个事件?

Joc*_*cie 4 c# eventstoredb

我已经设置了Event Store,并且可以愉快地将事件写入流、订阅和读取历史事件,一切正常。

我可以看到ResolvedEvent传递给我的订阅处理程序方法的那个有一个Link属性,但我想知道当我写入流时,我如何“设置”这个属性?

我尝试设置各种元数据属性(使用 JSON 表示法),查看源代码,但没有找到任何有效的方法。

我可能会以错误的方式解决这个问题,以及我正在尝试做的事情(将事件写入流,然后将第二个事件链接到第一个事件,以便稍后我可以找到“回复”)应该以另一种方式完成。

Pio*_*ula 6

我不认为Link是你认为的意思吗?(除非您可以从文档中引用实际上应该做的事情)

该链接用于从各种其他流创建的投影。

例如:

当您启用 EvenStore 中的所有投影时,您将获得一个开箱即用的 Group 投影。此投影通过按“group-id”的命名约定对流进行分组来工作

考虑将几个聚合保存到它们自己的流中

  • 客户-10001
  • 客户-10002
  • 客户-10003

这很好,但是您如何订阅发生在这些流中的任何事件的任何事件。这就是组内投影开始起作用的地方

您订阅了 $ce-customer 流,这是一个投影。

当您实际阅读该投影时,您将获得的只是原始事件的链接。这就是我正在谈论的LINK,也许你会混淆。

所以你知道 .NET 客户端中的那个选项 resolveLinkTos

 Task<EventReadResult> ReadEventAsync(string stream, long eventNumber, bool resolveLinkTos);
Run Code Online (Sandbox Code Playgroud)

如果您将其设置为trueon,resolveLinkTos那么原始事件将返回到流数据中(不仅仅是指向原始事件的链接)。

所以它将返回所有链接流中的所有数据。