public void AddVertex(IRelationNode leftNode, IRelationNode rightNode, ICardinality leftCardinality = null, ICardinality rightCardinality = null) { if (leftNode == null) { throw new ArgumentNullException(nameof(leftNode)); } if (rightNode == null) { throw new ArgumentNullException(nameof(rightNode)); } if (leftNode.Vertices.ContainsKey(rightNode.Discriminant) || rightNode.Vertices.ContainsKey(leftNode.Discriminant)) { throw new ArgumentException(nameof(leftNode.Discriminant)); } var vertex = new RelationVertex(leftNode, rightNode, leftCardinality, rightCardinality); leftNode.Vertices.Add(rightNode.Discriminant, vertex); rightNode.Vertices.Add(leftNode.Discriminant, vertex); }
public RelationVertex(IRelationNode leftNode, IRelationNode rightNode, ICardinality leftCardinality = null, ICardinality rightCardinality = null) { if (leftNode == null) { throw new ArgumentNullException(nameof(leftNode)); } if (rightNode == null) { throw new ArgumentNullException(nameof(rightNode)); } if (leftNode == RightNode || leftNode.Discriminant == rightNode.Discriminant) { throw new ArgumentException("discriminants should be different"); } LeftNode = leftNode; RightNode = rightNode; LeftCardinality = leftCardinality ?? new Cardinality(); RightCardinality = leftCardinality ?? new Cardinality(); }
public void AddVertex(string leftDiscriminant, string rightDiscriminant, ICardinality leftCardinality = null, ICardinality rightCardinality = null) { AddVertex(Nodes[leftDiscriminant], Nodes[rightDiscriminant], leftCardinality, rightCardinality); }