ChangeTrackingService
allows to gather both point of views with property level granularity.Person
entity with a Name
property we can basically be in 2 major scenarios:ChangeTrackingService
perspective the Person
instance is changed, however from the user perspective maybe it's not since the Name
property has the exact same value as when it was instantiated.GetPropertyState(entity, property)
method of ChangeTrackingService
, given a tracked entity and a property name, returns the current state of the property as seen by the tracking service.None
: The property has no tracked states, thus is not changed either;Changed
: The property has tracked states, thus has changes; This means that in some way the property changed over time, this state does not take into account the actual value of the property;ValueChanged
: The property has tracked states and the actual value is different from the original one;Person
related changes:state
is Changed
& ValueChanged
. On the contrary the second one is Changed
only, because the memento service has tracked some changes but the current value is the same as the original one.IMemento
entities:IsPropertyValueChanged(propertyName)
: Is an extension method to IMemento
entities that acts like a shortcut to get if a property value changed over time or not;