I am not a big fan of event sourcing but for my current assignment it is the perfect fit. However I am still struggling with defining my commands and events. Most business applications have a lot of simple property changes originating from some UI form. If a form has 50 different properties, it makes zero sense to me to create 50 different commands resulting in 50 different command handlers and 50 different events. Surprisingly I can't find anything on the NET about this problem. All examples just update ONE property, that's not how real life is.The closest issue which comes up on searches are the problem of importing data from a CRUD system into an event sourced system.

So why not create a simple PropertiesChanged command, handler and event with just one member, a Dictionary of string and object where the Key is the property changed and the value the new value ? This would make things very easy, just one command/handler/event, also no code changes would be needed when the aggregates evolves with new properties.

Apply and replay still works, I still have a history what exactly was changed with each command.

So why is this not mentioned as the default way to do it ?