Пример #1
0
        private void Rollback(IList <HistoryItem> histories, RollbackAction rollbackAction, DateTime?time = null)
        {
            var historyRepo = this.HistoryRepository;

            if (histories.Count > 0)
            {
                foreach (var history in histories)
                {
                    var migration = historyRepo.TryRestore(history);
                    if (migration != null)
                    {
                        //CreateDatabase 不能回滚,需要使用 DeleteDatabase 方法。
                        if (!(migration is CreateDatabase))
                        {
                            this.MigrateDown(migration);

                            var version = migration.TimeId.AddMilliseconds(-TimeIdSpan / 2);
                            Must(this.DbVersionProvider.SetDbVersion(version));

                            if (rollbackAction == RollbackAction.DeleteHistory)
                            {
                                historyRepo.Remove(this.DbName, history);
                            }
                        }
                    }
                }
            }

            if (time.HasValue)
            {
                this.DbVersionProvider.SetDbVersion(time.Value);
            }
        }
Пример #2
0
        /// <summary>
        /// 全部回滚历史记录
        /// </summary>
        public void RollbackAll(RollbackAction rollbackAction = RollbackAction.None)
        {
            var version = this.GetDbVersion();

            var histories = this.EnsureHistoryRepository().GetHistoryItems(this.DbName, DateTime.MinValue, version);

            this.Rollback(histories, rollbackAction);
        }
Пример #3
0
        /// <summary>
        /// 回滚到指定时间
        /// </summary>
        /// <param name="time">The time.</param>
        /// <param name="rollbackAction">The rollback action.</param>
        public void RollbackToHistory(DateTime time, RollbackAction rollbackAction = RollbackAction.None)
        {
            var version = this.GetDbVersion();

            var histories = this.EnsureHistoryRepository().GetHistoryItems(this.DbName, time, version);

            this.Rollback(histories, rollbackAction, time);
        }
Пример #4
0
 public RollbackItem(string original, string renamed, RollbackAction operation)
 {
     SourceFileName = original;
     TargetFileName = renamed;
     Operation      = operation;
 }
Пример #5
0
 /// <summary>
 /// 回滚到指定时间
 /// </summary>
 /// <param name="time">The time.</param>
 /// <param name="rollbackAction">The rollback action.</param>
 public void RollbackToHistory(string time, RollbackAction rollbackAction = RollbackAction.None)
 {
     this.RollbackToHistory(DateTime.Parse(time), rollbackAction);
 }
Пример #6
0
        private void Rollback(IList<HistoryItem> histories, RollbackAction rollbackAction, DateTime? time = null)
        {
            var historyRepo = this.HistoryRepository;
            if (histories.Count > 0)
            {
                foreach (var history in histories)
                {
                    var migration = historyRepo.TryRestore(history);
                    if (migration != null)
                    {
                        //CreateDatabase 不能回滚,需要使用 DeleteDatabase 方法。
                        if (!(migration is CreateDatabase))
                        {
                            this.MigrateDown(migration);

                            var version = migration.TimeId.AddMilliseconds(-TimeIdSpan / 2);
                            Must(this.DbVersionProvider.SetDbVersion(version));

                            if (rollbackAction == RollbackAction.DeleteHistory) { historyRepo.Remove(this.DbName, history); }
                        }
                    }
                }
            }

            if (time.HasValue)
            {
                this.DbVersionProvider.SetDbVersion(time.Value);
            }
        }
Пример #7
0
 /// <summary>
 /// 回滚到指定时间
 /// </summary>
 /// <param name="time">The time.</param>
 /// <param name="rollbackAction">The rollback action.</param>
 public void RollbackToHistory(string time, RollbackAction rollbackAction = RollbackAction.None)
 {
     this.RollbackToHistory(DateTime.Parse(time), rollbackAction);
 }
Пример #8
0
        /// <summary>
        /// 回滚到指定时间
        /// </summary>
        /// <param name="time">The time.</param>
        /// <param name="rollbackAction">The rollback action.</param>
        public void RollbackToHistory(DateTime time, RollbackAction rollbackAction = RollbackAction.None)
        {
            var version = this.GetDbVersion();

            var histories = this.EnsureHistoryRepository().GetHistoryItems(this.DbName, time, version);

            this.Rollback(histories, rollbackAction, time);
        }
Пример #9
0
        /// <summary>
        /// 全部回滚历史记录
        /// </summary>
        public void RollbackAll(RollbackAction rollbackAction = RollbackAction.None)
        {
            var version = this.GetDbVersion();

            var histories = this.EnsureHistoryRepository().GetHistoryItems(this.DbName, DateTime.MinValue, version);

            this.Rollback(histories, rollbackAction);
        }