我是CQRS的新手,我有一个问题。我正在网上查看有关CQRS的一些帖子和示例,我在命令库中看到了这两个属性:Version和EventSourceID(或AggregateRootID)。
我知道该版本用于指示发出命令的聚合根的版本,事件源id是为其颁发的聚合根的id。
我希望到目前为止我是正确的......
我的问题是使用这些值的正确位置在哪里?在命令处理程序中,我会在下面执行类似的操作。在Handle方法中,我写了我的问题......
public class DoSomehingCmdHandler<DoSomethingCmd> : IDomainCommandHandler<DoSomethingCmd>
{
private readonly IDomainRepository m_repository;
public DoSomehingCmdHandler(IDomainRepository repository)
{
m_repository = repository;
}
public void Handle(DoSomethingCmd command)
{
var ar = m_repository.GetByID<Ar>(command.EventSourceID);
// should I check version here?
if (command.Version != ar.Version)
{
// throw or something else?
}
// if I don't check the version here, how do I pass the version proprty forward
// down to event store or where ever?
// rest ignored....
}
}
非常感谢你的启蒙。