Exemplo n.º 1
0
        ChangeSetContainer CreateChangeSet(bool acceptChanges)
        {
            ChangeSetContainer csc = new ChangeSetContainer();
            var addedObjects       = new List <IPersistenceCapable>();
            var deletedObjects     = new List <ObjectId>();
            var changedObjects     = new List <IPersistenceCapable>();

            foreach (var cacheEntry in cache.LockedObjects)
            {
                IPersistenceCapable pc = cacheEntry.pc;
                if (pc.NDOObjectState == NDOObjectState.Created)
                {
                    addedObjects.Add(pc);
                    if (acceptChanges)
                    {
                        pc.NDOObjectState = NDOObjectState.Persistent;
                    }
                }
                else if (pc.NDOObjectState == NDOObjectState.Deleted)
                {
                    deletedObjects.Add(pc.NDOObjectId);
                    if (acceptChanges)
                    {
                        pc.NDOObjectState = NDOObjectState.Transient;
                    }
                }
                else if (pc.NDOObjectState == NDOObjectState.PersistentDirty)
                {
                    changedObjects.Add(pc);
                    if (acceptChanges)
                    {
                        pc.NDOObjectState = NDOObjectState.Persistent;
                    }
                }
            }
            csc.RelationChanges = RelationChanges.ToList();
            csc.ChangedObjects  = changedObjects;
            csc.AddedObjects    = addedObjects;
            csc.DeletedObjects  = deletedObjects;
            if (acceptChanges)
            {
                cache.UnlockAll();
                RelationChanges.Clear();
            }
            return(csc);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Gets a serializable container, which contains all changes made to objects and relations.
        /// Serialization will be in binary format.
        /// </summary>
        /// <param name="acceptChanges">
        /// If true, a subsequent call to GetChangeSet would return an empty ChangeSetContainer.
        /// If false, a subsequent call to GetChangeSet would return the same ChangeSetContainer.
        /// <seealso cref="NDO.ChangeSetContainer"/>
        /// </param>
        /// <returns>A ChangeSetContainer object.</returns>
        public virtual ChangeSetContainer GetChangeSet(bool acceptChanges)
        {
            ChangeSetContainer csc = CreateChangeSet(acceptChanges);

            return(csc);
        }