Memento Design Pattern
Memento allows you to keep snapshot of original object state which can be reverted any moment of time.
In other words, Memento is a way with which you can capture internal state of any object without violating encapsulation.
It is type of behavioral pattern.
With memento pattern you can keep original state of object with it self so that on time when you want to revert the changes or you want to check whether object is modified or not you can use original clone of object along with that you can get which property is modified. Memento pattern is widely used in standard ADO.NET application as even in disconnected approach you are still able to hold original state of object.
Click here to download code.