public void RestoreFromClone(object obj) { IObjectManager om = this.Context.ObjectManager; IObjectClone clone = ((ICloneHelper)obj).GetObjectClone(); if (clone == null) { throw new EditException("Object has no cached clone!"); } IClassMap classMap = this.Context.DomainMap.MustGetClassMap(obj.GetType()); foreach (IPropertyMap propertyMap in classMap.GetAllPropertyMaps()) { if (propertyMap.IsCollection) { //TODO: Implement this } else { if (clone.HasOriginalValues(propertyMap.Name)) { om.SetOriginalPropertyValue(obj, propertyMap.Name, clone.GetOriginalPropertyValue(propertyMap.Name)); } om.SetPropertyValue(obj, propertyMap.Name, clone.GetPropertyValue(propertyMap.Name)); om.SetNullValueStatus(obj, propertyMap.Name, clone.GetNullValueStatus(propertyMap.Name)); om.SetUpdatedStatus(obj, propertyMap.Name, clone.GetUpdatedStatus(propertyMap.Name)); } } IIdentityHelper identityHelper = obj as IIdentityHelper; if (identityHelper != null) { identityHelper.SetIdentity(clone.GetIdentity()); if (clone.HasIdentityKeyParts()) { identityHelper.GetIdentityKeyParts().Clear(); foreach (object keyPart in clone.GetIdentityKeyParts()) { identityHelper.GetIdentityKeyParts().Add(keyPart); } } if (clone.HasKeyStruct()) { identityHelper.SetKeyStruct(clone.GetKeyStruct()); } } ObjectStatus objStatus = clone.GetObjectStatus(); om.SetObjectStatus(obj, objStatus); if (objStatus == ObjectStatus.NotRegistered) { this.Context.IdentityMap.UnRegisterCreatedObject(obj); } }
public void RestoreFromClone(object obj) { IObjectManager om = this.Context.ObjectManager; IObjectClone clone = ((ICloneHelper)obj).GetObjectClone(); if (clone == null) { throw new EditException("Object has no cached clone!"); } IClassMap classMap = this.Context.DomainMap.MustGetClassMap(obj.GetType()); foreach (IPropertyMap propertyMap in classMap.GetAllPropertyMaps()) { if (propertyMap.IsCollection) { } else { if (clone.HasOriginalValues(propertyMap.Name)) { om.SetPropertyValue(obj, propertyMap.Name, clone.GetPropertyValue(propertyMap.Name)); om.SetOriginalPropertyValue(obj, propertyMap.Name, clone.GetOriginalPropertyValue(propertyMap.Name)); om.SetNullValueStatus(obj, propertyMap.Name, clone.GetNullValueStatus(propertyMap.Name)); om.SetUpdatedStatus(obj, propertyMap.Name, clone.GetUpdatedStatus(propertyMap.Name)); } } } ObjectStatus objStatus = clone.GetObjectStatus(); om.SetObjectStatus(obj, objStatus); if (objStatus == ObjectStatus.NotRegistered) { this.Context.IdentityMap.UnRegisterCreatedObject(obj); } }