Next, we need to consider where to place the optimistic concurrency
version attribute. When we contemplate the definition of Aggregate, it could seem safest to version only the Root Entity. The Root’s version would be incremented every time a state-altering command is executed anywhere inside the Aggregate boundary, no matter how deep. Using the running example,
Product would have a
version attribute, and when any of its
reorderFrom() command methods are executed, the
version would always be incremented. This would prevent any other client from simultaneously modifying any attributes or properties anywhere inside the same
Product. Depending on the given Aggregate design, ...