예제 #1
0
        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);
        }
예제 #3
0
        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);
        }