Example #1
0
 /// <summary>
 /// Constructs a new Relation object
 /// </summary>
 public Relation(Class cl)
     : base(cl)
 {
     // fields initialized with null are optional
     // fields initialized with "" are required
     fieldName          = "";
     mappingTable       = null;
     referencedTypeName = "";
     relationName       = "";
 }
Example #2
0
        /// <summary>
        /// Removes the ForeignKeyColumn object from the list of ForeignKeyColumns in the parent object.
        /// </summary>
        public override void Remove()
        {
            Relation r = Parent as Relation;

            if (r != null)
            {
                r.RemoveForeignKeyColumn(this);
                return;
            }
            MappingTable mt = Parent as MappingTable;

            if (mt != null)
            {
                mt.RemoveChildForeignKeyColumn(this);
            }
        }
Example #3
0
        internal Relation(XmlNode relNode, Class parent)
            : base(relNode, parent)
        {
            fieldName          = relNode.Attributes["FieldName"].Value;
            referencedTypeName = relNode.Attributes["ReferencedTypeName"].Value;
            if (relNode.Attributes["AccessorName"] != null)
            {
                this.accessorName = relNode.Attributes["AccessorName"].Value;
            }

            if (relNode.Attributes["ForeignKeyTypeColumnName"] != null && relNode.Attributes["ForeignKeyTypeColumnName"].Value != string.Empty)
            {
                this.foreignKeyTypeColumnName = relNode.Attributes["ForeignKeyTypeColumnName"].Value;
            }

            if (relNode.Attributes["ForeignKeyColumnName"] != null) // Old mapping
            {
                ForeignKeyColumn fkColumn = new ForeignKeyColumn(this);
                fkColumn.Name = relNode.Attributes["ForeignKeyColumnName"].Value;
                this.foreignKeyColumns.Add(fkColumn);
            }
            else
            {
                XmlNodeList nl = relNode.SelectNodes(parent.Parent.selectForeignKeyColumns);
                foreach (XmlNode fkcNode in nl)
                {
                    this.foreignKeyColumns.Add(new ForeignKeyColumn(fkcNode, this));
                }
            }

            XmlNode mtNode = relNode.SelectSingleNode(Parent.Parent.selectMappingTable, Parent.Parent.nsmgr);

            if (null != mtNode)
            {
                mappingTable = new MappingTable(mtNode, this);
            }
            if (null != relNode.Attributes["RelationName"])
            {
                relationName = relNode.Attributes["RelationName"].Value;
            }
            else
            {
                relationName = string.Empty;
            }
        }
Example #4
0
        private bool ForeignKeyColumnsAreDifferent(MappingTable t1, MappingTable t2)
        {
            var t1ChildForeignKeyColumns = t1.ChildForeignKeyColumns.ToList();
            var t2ChildForeignKeyColumns = t2.ChildForeignKeyColumns.ToList();

            if (t1ChildForeignKeyColumns.Count != t2ChildForeignKeyColumns.Count)
            {
                return(true);
            }

            for (int i = 0; i < t1ChildForeignKeyColumns.Count; i++)
            {
                ForeignKeyColumn fkc1 = t1ChildForeignKeyColumns[i];
                ForeignKeyColumn fkc2 = t2ChildForeignKeyColumns[i];
                if (ColumnsAreDifferent(fkc1, fkc2))
                {
                    return(true);
                }
            }
            return(false);
        }
Example #5
0
 /// <summary>
 /// Constructs a ForeignKeyIterator object, which iterates over all child foreign key columns of the given mapping table.
 /// </summary>
 /// <param name="mt"></param>
 public ForeignKeyIterator(MappingTable mt)
 {
     this.columns = mt.ChildForeignKeyColumns.ToList();
 }