Example #1
0
        /// <summary>
        /// Scan for exists ObjectChange for this deferredObject and append this PropertyChange into
        /// </summary>
        /// <param name="deferredObjectChange"></param>
        /// <param name="propertyName"></param>
        /// <param name="deferredValue"></param>
        private void record(DeferredObjectChange <TPrincipal> deferredObjectChange, string propertyName, Func <object> deferredValue)
        {
            var deferredValues = deferredObjectChange.FutureValues;
            var propertyChange = getOrCreateNewPropertyChangeFor(deferredObjectChange.ObjectChange, propertyName);

            if (deferredValue != null)
            {
                deferredValues.Store(propertyName, deferredValue);
            }
        }
Example #2
0
        private DeferredObjectChange <TPrincipal> getOrCreateNewDeferredObjectChangeFor(TChangeSet set, object entity, string typeName, Func <string> deferredReference)
        {
            var deferredObjectChange = deferredObjectChanges.SingleOrDefault(doc => ReferenceEquals(doc.Key, entity)).Value;

            if (deferredObjectChange != null)
            {
                return(deferredObjectChange);
            }

            var result = factory.ObjectChange();

            result.TypeName        = typeName;
            result.ObjectReference = null;
            result.ChangeSet       = set;
            set.Add(result);

            deferredObjectChange = new DeferredObjectChange <TPrincipal>(result, deferredReference, serializer);
            deferredObjectChanges.Add(entity, deferredObjectChange);
            return(deferredObjectChange);
        }