My application needs its command interface to be idempotent.
For update commands I see no other option other than allowing commands to be replayed - we will have to live with multiple updated events each simply repeating the previous update. But for create commands - what should I do? What is the CQRS best practise?
I can use the repo to load the aggregate before I fire the create command, and catch the AggregateNotFound exception, but I would rather not have my logs littered with stack traces...
Or should I use the query model to check for the pre-existence of the aggregate?