c# - 使用 Event Store Client API (.NET),我如何写入流并将一个事件链接到另一个?
问题描述
我已经设置了Event Store,并且可以愉快地将事件写入流、订阅和读取历史事件,一切正常。
我可以看到ResolvedEvent
传递给我的订阅处理程序方法的那个有一个Link
属性,但我想知道当我写入流时,我如何“设置”这个属性?
我尝试设置各种元数据属性(使用 JSON 表示法),查看源代码,但没有找到任何可行的方法。
我可能会以错误的方式解决这个问题,以及我正在尝试做的事情(将事件写入流,然后将第二个事件链接到第一个事件,以便稍后找到“回复”)应该以另一种方式完成。
解决方案
我不认为Link是你认为的意思吗?(除非您可以从文档中引用实际上应该做的事情)
该链接用于从各种其他流创建的投影。
例如:
当您在 EvenStore 中启用所有投影时,您将获得一个开箱即用的组投影。此投影通过“group-id”的命名约定对流进行分组来工作
考虑将多个聚合保存到它们自己的流中
- 客户10001
- 客户-10002
- 客户-10003
这很好,但是您如何订阅发生在任何这些流中的任何事件。这就是内置组投影起作用的地方
您订阅了 $ce-customer 流,这是一个投影。
当您实际阅读该投影时,您将获得的只是原始事件的链接。这是我正在谈论的LINK ,也许您对此感到困惑。
所以你知道 .NET 客户端中的那个选项resolveLinkTos
Task<EventReadResult> ReadEventAsync(string stream, long eventNumber, bool resolveLinkTos);
如果您将其设置为true
on,resolveLinkTos
则原始事件将在流数据中返回(不仅仅是指向原始事件的链接)。
因此它将返回所有链接流中的所有数据。
推荐阅读
- vert.x - 使用 Vertx 处理结果组 - 如何协调?
- c# - 如何使用 MongoDB Driver 比较属性
- perl - 根据序列长度在此 perl 脚本中添加二肽频率
- asp.net-mvc - 当我运行我的应用程序时,我收到一个错误
- c# - MapPageRoute 在 Global.asax 中引发错误
- java - Thymeleaf 如何知道使用哪个端点?
- r - 由于线性假设中的小数,系统在计算上是奇异的
- typescript - 我可以将开放式元组转换为封闭式元组吗?
- node.js - 使用 babel 时模块构建失败
- next.js - 与 React-NextJS 一起使用的 react-apollo 抛出“无法读取未定义的属性”