title: Why limit commands and events to one aggregate? CQRS + ES + DDD
body: <p>Please explain why modifying many aggregates at the same time is a bad idea when doing CQRS, ES and DDD. Is there any situations where it still could be ok?</p>
  
  <p>Take for example a command such as PurgeAllCompletedTodos. I want this command to lead to one event that update the state of each completed Todo-aggregate by setting IsActive to false.</p>
  
  <p>Why is this not good?</p>
  
  <p>One reason I could think of:</p>
  
  <p>When updating the domain state it's probably good to limit the transaction to a well defined part of the entire state so that only this part need to be write locked during the update. Doing so would allow many writes on different aggregates in parallell which could boost performance in some extremely heavy scenarios.</p>