public virtual void Detach() { if (DetachState != DetachStateEnum.Attached) { throw new Exception("Store not Attached"); } _DetachState = DetachStateEnum.Detaching; foreach (IVertex v in VertexIdentifiersDictionary.Values) { foreach (IEdge e in v.OutEdges) { if (e is IDetachableEdge) { IDetachableEdge de = (IDetachableEdge)e; if (de.To.Store != this || (de.Meta != null && de.Meta.Store != this)) { de.Detach(); } } } } _DetachState = DetachStateEnum.Detached; }
public virtual void Attach() { if (_DetachState == DetachStateEnum.InDetached) { _DetachState = DetachStateEnum.Attached; return; } else { _DetachState = DetachStateEnum.Attaching; } foreach (IVertex v in VertexIdentifiersDictionary.Values) { foreach (IEdge e in v.OutEdges) { if (e is IDetachableEdge) { IDetachableEdge de = (IDetachableEdge)e; if (de.DetachState == DetachStateEnum.Detached) { de.Attach(); } if (de.To.Store.DetachState == DetachStateEnum.InDetached) { de.To.Store.Attach(); } } } } _DetachState = DetachStateEnum.Attached; }