我应该如何使用 EventStore 中的streamId?

发布于 2025-01-01 11:09:29 字数 144 浏览 0 评论 0原文

在 J Oliver 的 EventStore 中,打开流时我应该如何使用streamId?

我应该为每个对象/聚合根对象创建一个新的流/streamid 吗?

那么我认为应该是 ar 对象的订单状态对象是否应该每个都有一个streamid?

In J Oliver's EventStore how should i be using the streamId when opening a stream?

Should I have a new stream/streamid for each object/aggregate root object?

So should my order state objects which i think should be ar objects each have a streamid?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

愛放△進行李 2025-01-08 11:09:29

StreamId 是您的聚合根 ID。您可能想将其包含在您的命令中。由于它们是 Guid,因此您可以在从客户端发送命令之前设置它们,这意味着您可以对同一 AR 进行操作,而无需从读取模型加载它。

以下是使用 CommonDomain 项目的示例:

class CreateOrder {
    public Guid OrderId;
    ... 
}

class CreateOrderHandler {
    void Handle(command) {
        var order = Order.Create(command.OrderId);
        // This is using the Id property from AggregateBase in CommonDomain
        repository.Save(order, Guid.NewGuid(), null);
    }
}

The StreamId is your Aggregate Root Id. You probably want to include it in your Commands. Since they are Guids, you can set them before you send the command from the client which means that you can act upon the same AR without having to load it from the read model.

Here is an example using the CommonDomain project:

class CreateOrder {
    public Guid OrderId;
    ... 
}

class CreateOrderHandler {
    void Handle(command) {
        var order = Order.Create(command.OrderId);
        // This is using the Id property from AggregateBase in CommonDomain
        repository.Save(order, Guid.NewGuid(), null);
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文