protected override bool IsValueChanged(string propertyName) { var prop = DbEntry.Property(propertyName); var propertyType = DbEntry.Entity.GetType().GetProperty(propertyName).PropertyType; object originalValue = OriginalValue(propertyName); Comparator comparator = ComparatorFactory.GetComparator(propertyType); var changed = prop.IsModified && !comparator.AreEqual(CurrentValue(propertyName), originalValue); return(changed); }