public Proxy.IRelationship CreateRelationship(TransactionFramework.ISoapTransactionLink transactionLink, Guid domainId, Guid rootMapId, Dictionary <Proxy.ConnectionType, Proxy.INode> nodes, Proxy.RelationshipType relationshipType, string originalId) { FacadeRelationship facadeRelationship = new FacadeRelationship(); InProcess.InProcessRelationship relationship = new InProcess.InProcessRelationship(MapManager); relationship.OriginLink = transactionLink; relationship.Facade = facadeRelationship; relationship.Id = Guid.NewGuid(); relationship.DomainId = domainId; relationship.RootMapId = rootMapId; relationship.RelationshipType = relationshipType; relationship.OriginalId = originalId; relationship.Status = Proxy.LoadState.Full; facadeRelationship.BaseRelationship = relationship; foreach (KeyValuePair <Proxy.ConnectionType, Proxy.INode> relationshipContext in nodes) { Proxy.ConnectionSet connection = Proxy.ConnectionSetFactory.Instance.GetConnection(relationshipContext.Value, facadeRelationship, relationshipContext.Key); Proxy.INodeManager newRelationshipNodes = relationship.Nodes; newRelationshipNodes.Load(connection); Proxy.IRelationshipManager nodeRelationships = relationshipContext.Value.Relationships; nodeRelationships.Load(connection); } InProcessRelationships.Add(transactionLink, facadeRelationship); return(facadeRelationship); }
public virtual void ConnectNode(ConnectionType connectionType, INode node, ref Soap.TransactionFramework.TransactionChain chain) { InProcess.InProcessRelationship inProcessRelationship = this as InProcess.InProcessRelationship; Proxy.ConnectionSet connectionSet; if (inProcessRelationship != null) { connectionSet = Proxy.ConnectionSetFactory.Instance.GetConnection(node, inProcessRelationship.Facade, connectionType); } else { connectionSet = Proxy.ConnectionSetFactory.Instance.GetConnection(node, this, connectionType); } Proxy.INodeManager nodes = Nodes; nodes.Load(connectionSet); Proxy.IRelationshipManager relationships = node.Relationships; relationships.Load(connectionSet); }
private void DeleteRelationship(Guid relationshipUid) { if (ProxyRelationships.ContainsKey(relationshipUid)) { Proxy.IRelationship relationship = ProxyRelationships[relationshipUid]; IEnumerable <Proxy.NodeTuple> nodeTuples = relationship.Nodes.FindNodes(); foreach (Proxy.NodeTuple nodeTuple in nodeTuples) { Proxy.IRelationshipManager relationships = nodeTuple.Node.Relationships; relationships.Remove(relationship); } Proxy.INodeManager nodes = relationship.Nodes; nodes.Clear(); ProxyRelationships.Remove(relationshipUid); } if (ServiceRelationships.ContainsKey(relationshipUid)) { ServiceRelationships.Remove(relationshipUid); } }