///--------------------------------------------------------------------------------
 /// <summary>This method sets the default values.</summary>
 ///--------------------------------------------------------------------------------
 protected override void OnSetDefaults()
 {
     if (RelationshipProperty.ReverseInstance != null)
     {
         EditRelationshipProperty.TransformDataFromObject(RelationshipProperty.ReverseInstance, null, false);
     }
     else if (RelationshipProperty.IsAutoUpdated == true)
     {
         EditRelationshipProperty.TransformDataFromObject(RelationshipProperty, null, false);
     }
     else
     {
         RelationshipProperty newRelationshipProperty = new RelationshipProperty();
         newRelationshipProperty.RelationshipPropertyID = EditRelationshipProperty.RelationshipPropertyID;
         EditRelationshipProperty.TransformDataFromObject(newRelationshipProperty, null, false);
     }
     EditRelationshipProperty.ResetModified(true);
 }
        ///--------------------------------------------------------------------------------
        /// <summary>This method updates the view model data and sends update command back
        /// to the solution builder.</summary>
        ///--------------------------------------------------------------------------------
        protected override void OnUpdate()
        {
            // set up reverse engineering instance if not present
            if (RelationshipProperty.ReverseInstance == null && RelationshipProperty.IsAutoUpdated == true)
            {
                RelationshipProperty.ReverseInstance = new RelationshipProperty();
                RelationshipProperty.ReverseInstance.TransformDataFromObject(RelationshipProperty, null, false);

                // perform the update of EditRelationshipProperty back to RelationshipProperty
                RelationshipProperty.TransformDataFromObject(EditRelationshipProperty, null, false);
                RelationshipProperty.IsAutoUpdated = false;
            }
            else if (RelationshipProperty.ReverseInstance != null)
            {
                EditRelationshipProperty.ResetModified(RelationshipProperty.ReverseInstance.IsModified);
                if (EditRelationshipProperty.Equals(RelationshipProperty.ReverseInstance))
                {
                    // perform the update of EditRelationshipProperty back to RelationshipProperty
                    RelationshipProperty.TransformDataFromObject(EditRelationshipProperty, null, false);
                    RelationshipProperty.IsAutoUpdated = true;
                }
                else
                {
                    // perform the update of EditRelationshipProperty back to RelationshipProperty
                    RelationshipProperty.TransformDataFromObject(EditRelationshipProperty, null, false);
                    RelationshipProperty.IsAutoUpdated = false;
                }
            }
            else
            {
                // perform the update of EditRelationshipProperty back to RelationshipProperty
                RelationshipProperty.TransformDataFromObject(EditRelationshipProperty, null, false);
                RelationshipProperty.IsAutoUpdated = false;
            }
            RelationshipProperty.ForwardInstance = null;
            if (PropertyIDCustomized || ReferencedPropertyIDCustomized || OrderCustomized || DescriptionCustomized || TagsCustomized)
            {
                RelationshipProperty.ForwardInstance = new RelationshipProperty();
                RelationshipProperty.ForwardInstance.RelationshipPropertyID = EditRelationshipProperty.RelationshipPropertyID;
                RelationshipProperty.SpecSourceName = RelationshipProperty.DefaultSourceName;
                if (PropertyIDCustomized)
                {
                    RelationshipProperty.ForwardInstance.PropertyID = EditRelationshipProperty.PropertyID;
                }
                if (ReferencedPropertyIDCustomized)
                {
                    RelationshipProperty.ForwardInstance.ReferencedPropertyID = EditRelationshipProperty.ReferencedPropertyID;
                }
                if (OrderCustomized)
                {
                    RelationshipProperty.ForwardInstance.Order = EditRelationshipProperty.Order;
                }
                if (DescriptionCustomized)
                {
                    RelationshipProperty.ForwardInstance.Description = EditRelationshipProperty.Description;
                }
                if (TagsCustomized)
                {
                    RelationshipProperty.ForwardInstance.Tags = EditRelationshipProperty.Tags;
                }
            }
            EditRelationshipProperty.ResetModified(false);
            OnUpdated(this, null);

            // send update back to solution builder
            SendEditRelationshipPropertyPerformed();
        }
 ///--------------------------------------------------------------------------------
 /// <summary>This method resets the data.</summary>
 ///--------------------------------------------------------------------------------
 protected override void OnReset()
 {
     EditRelationshipProperty.TransformDataFromObject(RelationshipProperty, null, false);
     EditRelationshipProperty.ResetModified(false);
 }