【问题标题】:How should I be using the streamId in the EventStore?我应该如何在 EventStore 中使用 streamId?
【发布时间】:2012-02-01 08:50:55
【问题描述】:

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

我是否应该为每个对象/聚合根对象创建一个新的流/流 ID?

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

【问题讨论】:

    标签: cqrs neventstore


    【解决方案1】:

    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);
        }
    }
    

    【讨论】:

    • 但是我应该为每个订单对象设置一个聚合根 ID 吗?所以系统会有很多很多的聚合根
    • 如果您已将 Order 标识为聚合根,则每个 Order 实例都应该有自己的 Id。我不了解您的系统,但 Order 可能是 AR。想想你在关系系统中会如何做。然后,您将拥有每个订单的唯一 ID,这是相同的概念。聚合根 ID 是订单实例的唯一 ID。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 2011-09-18
    • 2020-08-18
    • 2014-10-15
    • 2020-07-21
    • 2017-03-14
    • 2019-03-02
    相关资源
    最近更新 更多