public Table(IDbContextFilter filter, Schema schema, string dbName, bool isView)
        {
            _filter = filter;
            Schema  = schema;
            DbName  = dbName;
            IsView  = isView;
            Columns = new List <Column>();

            _foreignKeyNamingStrategy = ForeignKeyNamingStrategyFactory.Create(filter, this);

            ResetNavigationProperties();
            ExtendedProperty = new List <string>();
        }
コード例 #2
0
        public static void UniqueKey(DatabaseDefinition definition, SqlTable sqlTable, ForeignKeyRegistrationToTableWithUniqueKey fkRegistration, IForeignKeyNamingStrategy fkNaming)
        {
            var referredTable       = definition.GetTable(fkRegistration.ReferredTableName);
            var referredUniqueIndex = GetReferredUniqueIndex(referredTable);

            var fk = ReplaceFKRegistrationWithNewFK(sqlTable, fkRegistration, referredTable);

            var placeHolderColumn = sqlTable.Columns.OfType <SqlColumnFKRegistration>().FirstOrDefault(c => c.FKRegistration == fkRegistration);
            var order             = sqlTable.Columns.GetOrder(placeHolderColumn.Name);

            sqlTable.Columns.Remove(placeHolderColumn.Name);

            foreach (var pkColumn in referredUniqueIndex.SqlColumns.Select(x => x.SqlColumn))
            {
                var col = new SqlColumn();
                pkColumn.CopyTo(col);

                col.Table = sqlTable;

                col.Types.SetAllNullable(fkRegistration.IsNullable);

                col.Name = fkNaming.GetFkToPkColumnName(pkColumn, fkRegistration.NamePrefix);

                sqlTable.Columns.Add(col.Name, col, order++);

                fk.ForeignKeyColumns.Add(new ForeignKeyColumnMap(col, pkColumn));
            }
        }