请求的聚合根版本使用情况

时间:2012-01-09 19:04:28

标签: domain-driven-design cqrs

我是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....
    }
}

非常感谢你的启蒙。

0 个答案:

没有答案