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); } }
/// <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); }
/// <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); }
public RollbackItem(string original, string renamed, RollbackAction operation) { SourceFileName = original; TargetFileName = renamed; Operation = operation; }
/// <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); }
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); } }