public MetaModelRelation(string databaseName, string schemaName, string tableName, string relationTableName, string keyName, IEnumerable<string> relationColumns, IEnumerable<string> uniqueColumns, RelationDirectionEnum direction) { this.DatabaseName = databaseName; this.SchemaName = schemaName; this.TableName = tableName; this.RelationTableName = relationTableName; this.KeyName = keyName; this.RelationColumns = new List<string>(relationColumns); this.UniqueColumns = new List<string>(uniqueColumns); this.Direction = direction; }
public MetaModel BuildMetaModel(InfoSchemaTable table, IEnumerable <InfoSchemaForeignKeys> foreignKeys, IEnumerable <InfoSchemaColumn> tableColumns) { List <MetaModelColumn> columns = new List <MetaModelColumn>(); List <MetaModelRelation> relations = new List <MetaModelRelation>(); string modelName = this.textUtility.ToCapitalCase(table.TableName); string camelCasedModelName = this.textUtility.ToCamelCase(table.TableName); string pluralisedModelName = this.textUtility.ToPluralCapitalCase(table.TableName); foreach (var col in tableColumns) { string columnName = this.textUtility.Sanitise(this.textUtility.ToCapitalCase(col.ColumnName)); foreach (var namingConvention in this.fieldNamingConventions) { columnName = namingConvention.Process(columnName); } var storCol = new MetaModelColumn(col.ColumnName, col.IsPrimaryKeyColumn, col.IsAutoIncrementColumn, col.IsNullable, col.IsUpdatable, col.IsUnique, col.OrdinalPosition, col.DataType, col.CharacterMaximumLength.HasValue ? col.CharacterMaximumLength.Value : 0, columnName, textUtility.ToCamelCase(col.ColumnName), this.dataStorageTypeConvertor.GetNativeTypeForSqlType(col.DataType)); columns.Add(storCol); } foreach (var fk in foreignKeys) { RelationDirectionEnum direction = fk.Direction == "FORWARD" ? RelationDirectionEnum.Forward : RelationDirectionEnum.Reverse; var storRelation = new MetaModelRelation(fk.FkTableCatalog, fk.FkTableSchema, fk.FkTableName, fk.UqTableName, fk.FkConstraintName, new string[] { fk.FkColumnName }, new string[] { fk.UqColumnName }, direction); relations.Add(storRelation); } MetaModelTypeEnum type = table.TableType == "VIEW" ? MetaModelTypeEnum.View : MetaModelTypeEnum.Table; return(new MetaModel(table.TableCatalog, table.TableSchema, table.TableName, columns, relations, modelName, camelCasedModelName, pluralisedModelName, type)); }
public MetaModelRelation(string databaseName, string schemaName, string tableName, string relationTableName, string keyName, IEnumerable <string> relationColumns, IEnumerable <string> uniqueColumns, RelationDirectionEnum direction) { this.DatabaseName = databaseName; this.SchemaName = schemaName; this.TableName = tableName; this.RelationTableName = relationTableName; this.KeyName = keyName; this.RelationColumns = new List <string>(relationColumns); this.UniqueColumns = new List <string>(uniqueColumns); this.Direction = direction; }