You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Marten MultiStreamProjection使用异常:查询结果为Null求助

问题排查与解决方案

核心错误原因

你用AggregateStreamAsync查询MultiStreamProjection的结果是错误的——这个方法的作用是聚合单个事件流的状态,而MultiStreamProjection是跨多个事件流、基于所有匹配事件构建的投影,它的结果是作为文档存在的,需要用常规的文档查询接口获取。

修正后的查询代码

把查询Summary的代码替换成下面的逻辑:

using (var s3 = store.QuerySession())
{
    var a1 = s3.Query<Summary>().FirstOrDefault(x => x.Id == "S1");
    Console.WriteLine(a1);
}

补充说明

  • 你的SummaryProjection配置本身是正确的:Identity<DetailCreated>(x => x.SummaryId)正确指定了按SummaryId分组聚合,Create和Apply方法的逻辑也没问题。
  • 因为你用了ProjectionLifecycle.Live,每次查询时Marten会实时从事件流中计算投影结果,不需要提前预存到数据库。如果换成ProjectionLifecycle.Async或ProjectionLifecycle.Inline,投影结果会持久化到文档表,查询逻辑保持一致即可。

内容的提问来源于stack exchange,提问作者JonathanPeel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 05:55:01