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

Cod*_*ero 4 cqrs event-store

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

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

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

Mik*_*erg 6

StreamId是您的聚合根ID.您可能希望将其包含在命令中.由于它们是Guids,您可以在从客户端发送命令之前设置它们,这意味着您可以对相同的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);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 如果您已将Order标识为聚合根,则每个Order实例都应具有自己的Id.我不知道你的系统,但订单可能是AR.想想你将如何在关系系统中做.然后,每个订单都有一个唯一的ID,这是相同的概念.Aggregate Root Id是订单实例的唯一ID. (2认同)