public SchemaDefinitionCreateResult CreateSchemaDefinition(IEnumerable <Type> types, string schemaName = null) { SchemaName = schemaName ?? "null"; FireEvent(CreatingSchemaStarted, EventArgs.Empty); AddAugmentations(); FireEvent(CreatingTypeSchemaStarted, EventArgs.Empty); TypeSchema typeSchema = CreateTypeSchema(types, schemaName); FireEvent(CreatingTypeSchemaFinished, EventArgs.Empty); schemaName = schemaName ?? string.Format("_{0}_", typeSchema.Name); SchemaManager.SetSchema(schemaName, false); //TODO: enable more granular manipulation of schema file path in schema manager by giving it a PathProvider property SchemaName = schemaName; FireEvent(WritingDaoSchemaStarted, EventArgs.Empty); List <KeyColumn> missingKeyColumns = new List <KeyColumn>(); List <ForeignKeyColumn> missingForeignKeyColumns = new List <ForeignKeyColumn>(); WriteDaoSchema(typeSchema, SchemaManager, missingKeyColumns, missingForeignKeyColumns, TableNameProvider); FireEvent(WritingDaoSchemaFinished, EventArgs.Empty); SchemaDefinitionCreateResult result = new SchemaDefinitionCreateResult(SchemaManager.GetCurrentSchema(), typeSchema, missingKeyColumns.ToArray(), missingForeignKeyColumns.ToArray()); return(result); }
public SqlStringBuilder WriteSchemaScript(Database database, TypeSchemaGenerator typeSchemaGenerator, SchemaManager schemaManager = null) { schemaManager = schemaManager ?? new SchemaManager { AutoSave = false }; typeSchemaGenerator.SchemaManager = schemaManager; LastSchemaDefinitionCreateResult = typeSchemaGenerator.CreateSchemaDefinition(); return(WriteSchemaScript(database, LastSchemaDefinitionCreateResult)); }
public SqlStringBuilder WriteSchemaScript(Database database, SchemaDefinitionCreateResult schemaDefinitionCreateResult) { SchemaDefinition schemaDefinition = schemaDefinitionCreateResult.SchemaDefinition; SchemaWriter writer = database.GetService <SchemaWriter>(); IEnumerable <ForeignKeyAttribute> fks = GetForeignKeyAttributes(schemaDefinition); schemaDefinition.Tables.Each(table => { string columnDefinitions = GetColumnDefinitions(table, writer); writer.WriteCreateTable(table.Name, columnDefinitions, fks.Where(fk => fk.Table.Equals(table.Name)).ToArray()); writer.Go(); }); schemaDefinition.ForeignKeys.Each(fk => { writer.WriteAddForeignKey(fk.TableName, fk.ReferenceName, fk.Name, fk.ReferencedTable, fk.ReferencedKey); writer.Go(); }); return(writer); }
public static void CommitSchema(this Database db, SchemaDefinitionCreateResult schemaInfo) { db.ExecuteSql(WriteSchemaScript(db, schemaInfo)); }
public static SqlStringBuilder WriteSchemaScript(this Database db, SchemaDefinitionCreateResult schemaInfo) { TypeSchemaScriptWriter writer = new TypeSchemaScriptWriter(); return(writer.WriteSchemaScript(db, schemaInfo)); }