public void Collect(string changedPropertyName) { XPMemberInfo member = GetPersistentMember(changedPropertyName); if (member != null && !_memberInfoCollection.Contains(member)) { _memberInfoCollection.Add(_xpBaseObject.ClassInfo.GetMember(member.Name)); } }
protected override MemberInfoCollection GetPropertiesListForUpdateInsert(object theObject, bool isUpdate, bool addDelayedReference) { var defaultMembers = base.GetPropertiesListForUpdateInsert(theObject, isUpdate, addDelayedReference); if (TrackPropertiesModifications && isUpdate) { var members = new MemberInfoCollection(GetClassInfo(theObject)); foreach (var mi in base.GetPropertiesListForUpdateInsert(theObject, true, addDelayedReference)) { if (mi is ServiceField || mi.GetModified(theObject)) { members.Add(mi); } } return(members); } return(defaultMembers); }
protected override MemberInfoCollection GetPropertiesListForUpdateInsert(object theObject, bool isUpdate) { if (theObject is ISupportChangedMembers && !this.IsNewObject(theObject)) { XPClassInfo ci = GetClassInfo(theObject); MemberInfoCollection changedMembers = new MemberInfoCollection(ci); foreach (XPMemberInfo m in base.GetPropertiesListForUpdateInsert(theObject, isUpdate)) { //If it is a servicefield this is required (OptimisticLockingField, GCRecord etc) if (m.HasAttribute(typeof(PersistentAttribute)) || m.IsKey || m is ServiceField || ((ISupportChangedMembers)theObject).ChangedMembers.Contains(m)) { changedMembers.Add(m); } } return changedMembers; } return base.GetPropertiesListForUpdateInsert(theObject, isUpdate); }