The common way of versioning an aggregate is by counting its number of events. This approach is used in both
CommonDomain and in the
Lokad CQRS Sample.
Suppose we execute a command that appends 4 events to an aggregate with version 1. As a result, the command execution raises the aggregate's version to 5.
If we request an event store to give us version 3 of this aggregate, we will get it in an inconsistent state, since it was never commited with just 3 events.
To me, it seems more logical to define version of an aggregate by the number of its commits. In this case, the command would raise the version to 2.
Am I missing something?