/// <summary>
 /// returns whether entity property changed in this snapshot. (ChangedPropertiesSnapshots.ContainsKey(key))
 /// </summary>
 /// <param name="propertyName"></param>
 /// <returns></returns>
 public bool IsPropertyChanged(string propertyName) => ChangedPropertiesSnapshots.ContainsKey(propertyName);
 /// <summary>
 /// Shortcut of ChangedProperties
 /// </summary>
 /// <param name="propertyName"></param>
 /// <returns>Changed property. If dictionary doesn't contain key, this will return null</returns>
 public string this[string propertyName] => ChangedPropertiesSnapshots.ContainsKey(propertyName) ? ChangedPropertiesSnapshots[propertyName] : null;