protected override void RelCreationChange(EntityChangeRelCreation item) { IEnumerable <EntityChangeDescriptor> temp = ChangeLog.Where(p => p.Entity == item.Entity); if (temp.Any(p => p is EntityChangeRelCreation == false)) { throw new InvalidOperationException("Unable to schedule a relationship creation for an entity already tracked."); } if (temp.Any() && temp.Any(p => !p.Equals(item))) { throw new InvalidOperationException("Unable to schedule a relationship creation. Already tracked for another source-destination pair."); } if (ChangeLog.Any(p => p is EntityChangeNodeDeletion && p.Entity == item.Source) || item.Source.EntityId == null && !ChangeLog.Any(p => p is EntityChangeNodeCreation && p.Entity == item.Source)) { throw new ArgumentException("Invalid source node"); } if (ChangeLog.Any(p => p is EntityChangeNodeDeletion && p.Entity == item.Destination) || item.Destination.EntityId == null && !ChangeLog.Any(p => p is EntityChangeNodeCreation && p.Entity == item.Destination)) { throw new ArgumentException("Invalid destination node"); } if (!temp.Any()) { ChangeLog.Add(item); } }
private bool RedoCommandCanExecute(object arg) { return(redoChangeLog.Any()); }