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)); }