protected virtual void FlushTempStorage() { List <EntityContext> nextFlushEntities = new List <EntityContext>(); do { foreach (EntityContext entityContext in nextFlushEntities) { List <IPersistentStorage> storage = _setup.GetPersistentStorages(entityContext.Description); IFlushStrategy flushTrigger = _setup.GetFlushTrigger(entityContext.Description); flushTrigger.SetNextFlushCount(entityContext); flushTrigger.SetNextReleaseCount(entityContext); if (entityContext.Description.InsertToPersistentStorageBeforeUse) { _setup.TemporaryStorage.GenerateStorageIds(entityContext, storage); } _setup.TemporaryStorage.FlushToPersistent(entityContext, storage); } _setup.TemporaryStorage.WaitAllTasks(); nextFlushEntities = _entityContexts.Values .Where(x => x.EntityProgress.ReleasedCount < x.EntityProgress.CurrentCount) .ToList(); } while (nextFlushEntities.Count > 0); _setup.TemporaryStorage.WaitAllTasks(); }
//methods public virtual bool Execute() { List <IPersistentStorage> persistentStorages = _setup.GetPersistentStorages(_entityContext.Description); _setup.TemporaryStorage.GenerateStorageIds(_entityContext, persistentStorages); return(true); }
//methods public virtual bool Execute() { List <IPersistentStorage> persistentStorages = _setup.GetPersistentStorages(EntityContext.Description); _setup.TemporaryStorage.FlushToPersistent(EntityContext, persistentStorages) .ContinueWith(prev => { _setup.Supervisor.EnqueueCommand( new CheckFlushRequiredCommand(EntityContext, _setup, _flushCandidatesRegistry)); }); return(true); }