Ejemplo n.º 1
0
        public virtual Database LinkTables()
        {
            foreach (var table in Tables)
            {
                foreach (var column in table.Columns)
                {
                    if (table.PrimaryKey?.Key.Count == 1 && table.PrimaryKey.Key.Contains(column.Name))
                    {
                        continue;
                    }

                    foreach (var parentTable in Tables)
                    {
                        if (table.FullName == parentTable.FullName)
                        {
                            continue;
                        }

                        if (parentTable.PrimaryKey != null && parentTable.PrimaryKey.Key.Contains(column.Name))
                        {
                            table.ForeignKeys.Add(new ForeignKey(column.Name)
                            {
                                ConstraintName = NamingConvention.GetForeignKeyConstraintName(table, new string[] { column.Name }, parentTable),
                                References     = string.Format("{0}.{1}", Name, parentTable.FullName),
                                Child          = table.FullName
                            });
                        }
                    }
                }
            }

            return(this);
        }
Ejemplo n.º 2
0
        public virtual Database AddRelation(ITable target, string[] key, ITable source)
        {
            target.ForeignKeys.Add(new ForeignKey(key)
            {
                ConstraintName = NamingConvention.GetForeignKeyConstraintName(target, key, source),
                References     = source.FullName,
                Child          = target.FullName
            });

            return(this);
        }