The Concurrency property for any persisted object will provide you with a concurrency object. The HasChanged property will determine if any values have changed.
Resetting the values is a bit trickier. You will need to use reflection to reset each property value to the value contained in the concurrency collection. You can use a ReflectionCacheItem from the reflection cache which contains lots of useful cached properties for a type:
ReflectionCacheItem cache = Component.Instance.ReflectionCache.Lookup(type);
Then loop through the value properties for the type:
foreach (PropertyInfo valueprop in cache.ValueProperties)
and use SetValue to set the property value. You can get the name of the property from the collection by using the static Formatter.GetPropertyName method. You can use an empty string as a seperator for this method as you are not interested in reference properties.