Hi Scott,
To reject all entity changes made you should call mgr.RejectChanges.
Note that this will roll back all entity changes since the cache was created or the last SaveChanges call was made, which might also roll back entity changes you don't want to.
When calling RejectChanges on an entity rather than on the entityManager, the call will not propagate to the entity's children. You could, however, accomplish it by using reflection. In this case, you'd 'travel' thru
the entire entity's hierarchy, rejecting changes to all its children. (and
possibly grandchildren, etc, if needed)
That will, however, be a laborious
because you'd need to navigate thru all the entities to call
RejectChanges.
Before going that path I'd suggest using a "sandbox" EM
where you could call mgr.RejectChanges() or simply save and then merge the
EntityCache of the sandbox mgr with the main entity manager. You will find
detailed information about this approach in the
DevForce
Resource Center.
I hope this helps,
Silvio