Beispiel #1
0
        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);
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
 public void AddVertex(string leftDiscriminant, string rightDiscriminant, ICardinality leftCardinality = null, ICardinality rightCardinality = null)
 {
     AddVertex(Nodes[leftDiscriminant], Nodes[rightDiscriminant], leftCardinality, rightCardinality);
 }