protected void SafelyExecuteChanges(IEnumerable <DbChange> changes) { var successChanges = new Stack <DbChange>(); try { foreach (var change in changes) { Console.WriteLine("-----------------"); Console.WriteLine(change.Forward); Database.ExecuteSqlCommand(change.Forward); successChanges.Push(change); } Changes.AddRange(changes); }catch (Exception ex) { try{ while (successChanges.Count > 0) { var rollback = successChanges.Pop(); Database.ExecuteSqlCommand(rollback.Backward); } }catch (Exception rollbackEx) { throw new AggregateException("Failed while running upgrade, then failed rolling back!", new [] { ex, rollbackEx }); } throw; } }
private void AddAndExecute(params StateChange[] changes) { Changes.AddRange(changes); foreach (var change in changes) { change.ExecuteQuery(this); } Provider.State.ApplyChanges(changes, this); }
private void AddAndExecute(params StateChange[] changes) { Changes.AddRange(changes); var commands = changes.Select(x => DatabaseProvider.ToDbCommand(GetQuery(x))); foreach (var command in commands) { DatabaseTransaction.ExecuteNonQuery(command); } }
public VersionedList <T> AddRange(IEnumerable <T> items) { var itemsToAdd = items.ToArray(); var changes = Enumerable.Range(0, itemsToAdd.Length) .Select(i => ListChange.Added(Version + i, Items.Count + i, itemsToAdd[i])); return(new VersionedList <T>( Items.AddRange(items), Version + itemsToAdd.Length, Changes.AddRange(changes) )); }
public void SaveObservedChanges(IBrowsableDataObject plainObject) { foreach (var change in Changes) { TcOpen.Inxton.TcoAppDomain.Current.Logger.Information($"User '{change.UserName}' changed value of '{change.ValueTag.Symbol}' from '{change.OldValue}' to '{change.NewValue}' {{@payload}}", change); } if (DataObject.Changes == null) { DataObject.Changes = new List <ValueChangeItem>(); } Changes.AddRange(DataObject.Changes); ((IPlainTcoEntity)plainObject).Changes.AddRange(Changes); Changes = new List <ValueChangeItem>(); }
private VersionedList <T> _removeWhere(Func <T, int, bool> predicate) { var pairs = Items .Select((T item, int i) => new { Index = i, Item = item }) .ToArray(); var pairsToRemove = pairs .Where(pair => predicate(pair.Item, pair.Index)) .OrderByDescending(pair => pair.Index) .ToArray(); var remaining = pairs .Where(pair => !predicate(pair.Item, pair.Index)) .Select(pair => pair.Item); var changes = Enumerable.Range(0, pairsToRemove.Length) .Select(i => ListChange.Removed(Version + i, pairsToRemove[i].Index, pairsToRemove[i].Item)); return(new VersionedList <T>( ImmutableList.CreateRange(remaining), Version + pairsToRemove.Length, Changes.AddRange(changes) )); }
/// <summary> /// Constructor /// </summary> /// <param name="description">Description</param> /// <param name="changes">Changes</param> public PatchConfig(string description, PatchChange[] changes) : this() { Description = description; Changes.AddRange(changes); }
public VersionedList <T> Reverse(int index, int count) { var start = index; var finish = index + count - 1; var moves = Enumerable.Range(0, count) .Select(i => ListChange.Moved(Version + i, start, finish - i, Items[start + i])); return(new VersionedList <T>(Items.Reverse(index, count), Version + count, Changes.AddRange(moves))); }
public void AddChangesRange(IEnumerable <ChessBoxChange> changes) { Changes.AddRange(changes); }