public void DeleteRelation(RelationNode relationNode) { FkRelation fkRelation = relationNode.Relation as FkRelation; TableNode parentNode = null; if (fkRelation == null) { ForeignFkRelation ffkrel = relationNode.Relation as ForeignFkRelation; if (ffkrel == null) { return; } parentNode = (TableNode)this.databaseNode.FindNode(ffkrel.RelatedTable, typeof(TableNode)); relationNode = parentNode.FindRelationNode(relationNode.Text, relationNode.Parent.Text); //(RelationNode) parentNode.FindNode(relationNode.Text, typeof(RelationNode)); fkRelation = (FkRelation)relationNode.Relation; if (parentNode.Table.MappingType == TableMappingType.MappedAsIntermediateClass) { parentNode.UnmapIntermediateClass(null, EventArgs.Empty); return; } } else { parentNode = (TableNode)relationNode.Parent; } //parentNode.Nodes. Remove(relationNode); relationNode.Remove(); parentNode.Nodes.Add(relationNode.OriginalColumnNode); Debug.Assert(fkRelation != null); if (fkRelation != null) { if (fkRelation.RelationDirection != RelationDirection.DirectedFromMe) { TableNode tn = databaseNode.FindTableNode(fkRelation.RelatedTable, true); RelationNode nodeToRemove = tn.FindRelationNode(relationNode.Text, parentNode.Text); if (nodeToRemove != null) { nodeToRemove.Remove(); } } } }