Exemple #1
0
 private void ProcessRegistry(PersistenceState persistenceState)
 {
     foreach (var item in activeRegistry.GetItems(persistenceState))
     {
         if (IsPinned(item))
         {
             PinnedItems.Register(item);
         }
         else
         {
             PersistableItems.Register(item);
         }
     }
 }
        public virtual IEnumerable <PersistAction> GetPersistSequence(EntityChangeRegistry registry)
        {
            // Delete
            foreach (var action in GetDeleteSequence(GetRemovedStates(registry)))
            {
                yield return(action);
            }

            // Update
            foreach (var state in registry.GetItems(PersistenceState.Modified))
            {
                if (state.IsNotAvailableOrMarkedAsRemoved)
                {
                    continue;
                }
                yield return(new PersistAction(Node, state, PersistActionKind.Update));

                state.DifferentialTuple.Merge();
            }

            // Insert
            foreach (var action in GetInsertSequence(GetCreatedStates(registry)))
            {
                yield return(action);
            }

            // Commit state differences, if any
            foreach (var state in GetCreatedStates(registry))
            {
                state.CommitDifference();
            }
        }
 protected static IEnumerable <EntityState> GetRemovedStates(EntityChangeRegistry registry)
 {
     return(registry
            .GetItems(PersistenceState.Removed)
            .Except(registry.GetItems(PersistenceState.New)));
 }
 protected static IEnumerable <EntityState> GetCreatedStates(EntityChangeRegistry registry)
 {
     return(registry
            .GetItems(PersistenceState.New)
            .Where(state => !state.IsNotAvailableOrMarkedAsRemoved));
 }