private bool ShouldSkipRegistration(EntityFieldValueSetCompletedEventArgs e)
 {
     if (!Session.DisableAutoSaveChanges)
     {
         return(true);
     }
     if (Session.IsPersisting)
     {
         return(true);
     }
     if (e.Exception != null)
     {
         return(true);
     }
     if (!e.Field.IsEntity && !e.Field.IsStructure)
     {
         return(true);
     }
     if (e.Field.IsEntity && e.Field.Associations.First().IsPaired)
     {
         return(true);
     }
     if (e.NewValue == null && e.OldValue == null)
     {
         return(true);
     }
     return(false);
 }
 private void OnEntityFieldValueSetCompleted(object sender, EntityFieldValueSetCompletedEventArgs e)
 {
     if (ShouldSkipRegistration(e))
     {
         return;
     }
     if (e.Field.IsStructure)
     {
         HandleStructureValues(e.Entity, e.Field, (Structure)e.OldValue, (Structure)e.NewValue);
     }
     else
     {
         HandleEntityValues(e.Entity, e.Field, (Entity)e.OldValue, (Entity)e.NewValue);
     }
 }