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>(); }
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)); } }