We have separate DTOs for the Commands(Change customer address to X)
vs Query (Show me customer details for Customer X). When a command
comes in we just use all of it's information.
The one place where we did have to do some work was in terms of
tracking lists. Our solution was to just have an Add/Remove list on
the command DTO and do the work by hand. I think in the future it'd
be interesting to look at some convention over configuration stuff to
handle the add/remove handling via generics or something.