change tracking is done inside the entities, so if you pass entities from a service to a client, change them there and send them back to the service, all you have to do is simply persist the graph and all changes made are saved.
In v2.0, inheritance in the XML isn't supported, it will be in v2.5 (currently in beta). So if you have a collection with several instances of different types of the same hierarchy, these won't be deserialized properly.
It's however recommended to work with message-based webservices, which is what most SOA experts recommend.