public void CreateProperty(CreatePropertyCommand createPropertyCommand, object sender, ExecutionCancelEventArgs e) { IEngine engine = sender as IEngine; ISchemaService schemaService = engine.GetService <ISchemaService>(); IDatabaseService databaseService = engine.GetService <IDatabaseService>(); string className = createPropertyCommand.ClassName; string propertyName = createPropertyCommand.Name; string propertyType = createPropertyCommand.Type.ToString(); string columnName = createPropertyCommand.ColumnName; DbType columnType = databaseService.GetDbType(createPropertyCommand.Type, createPropertyCommand.StringLength);; string tableName = schemaService.GetTableForClass(className); //Add a property to the class schemaService.CreateProperty(className, propertyName, propertyType); //Set the nullability of the property schemaService.SetPropertyMetaData(className, propertyName, PropertyMetaData.Nullable, createPropertyCommand.Nullable); //Add a column to the table schemaService.CreateColumn(tableName, columnName, columnType); //Set the nullability of the column schemaService.SetColumnMetaData(tableName, columnName, ColumnMetaData.Nullable, createPropertyCommand.Nullable); //Map the property to the column in the schema schemaService.MapPropertyToColumn(className, propertyName, tableName, columnName); }
public void CreateRelationship(CreatePropertyCommand createPropertyCommand, object sender, Puzzle.SideFX.Framework.Execution.ExecutionCancelEventArgs e) { IEngine engine = sender as IEngine; ISchemaService schemaService = engine.GetService <ISchemaService>(); IDatabaseService databaseService = engine.GetService <IDatabaseService>(); string className = createPropertyCommand.ClassName; string propertyName = createPropertyCommand.Name; string propertyType = createPropertyCommand.Type.ToString(); string columnName = createPropertyCommand.ColumnName; DbType columnType = DbType.Int32; //TODO: Get the column of the identity property string tableName = schemaService.GetTableForClass(className); switch (createPropertyCommand.Multiplicity) { case Multiplicity.OneToMany: case Multiplicity.OneToOne: //Add a property to the class schemaService.CreateProperty(className, propertyName, propertyType); //Set the nullability of the property schemaService.SetPropertyMetaData(className, propertyName, PropertyMetaData.Nullable, createPropertyCommand.Nullable); //Add a column to the table schemaService.CreateColumn(tableName, columnName, columnType); //Set the nullability of the column schemaService.SetColumnMetaData(tableName, columnName, ColumnMetaData.Nullable, createPropertyCommand.Nullable); //Map the property to the column in the schema schemaService.MapPropertyToColumn(className, propertyName, tableName, columnName); break; case Multiplicity.ManyToMany: //Add a property to the class schemaService.CreateListProperty(className, propertyName, propertyType); //Add a many-many table //schemaService.CreateTable(tableName, columnName, columnType); break; case Multiplicity.ManyToOne: //Add a property to the class schemaService.CreateListProperty(className, propertyName, propertyType); //Add a column to the table //schemaService.CreateColumn(tableName, columnName, columnType); break; } }
public void OnExecuting(object sender, ExecutionCancelEventArgs e) { CreateClassCommand createClassCommand = CreateClassCommand.Evaluate(e.Command); if (createClassCommand == null) { return; } IEngine engine = sender as IEngine; ISchemaService schemaService = engine.GetService <ISchemaService>(); string name = createClassCommand.Name; string propertyName = "Id"; string propertyType = "System.Int32"; string columnName = name + "Id"; DbType columnType = DbType.Int32; //Add the class to the schema schemaService.CreateClass(name); //Add a property to the class schemaService.CreateProperty(name, propertyName, propertyType); //Mark the property as an identity property schemaService.SetPropertyMetaData(name, propertyName, PropertyMetaData.Identity, true); //Mark the property as not nullable schemaService.SetPropertyMetaData(name, propertyName, PropertyMetaData.Nullable, false); //Mark the property as assigned by the data source schemaService.SetPropertyMetaData(name, propertyName, PropertyMetaData.SourceAssigned, true); //Add the table to the schema schemaService.CreateTable(createClassCommand.TableName); //Add a column to the table schemaService.CreateColumn(createClassCommand.TableName, columnName, columnType); //Mark the column as a primary key column schemaService.SetColumnMetaData(createClassCommand.TableName, columnName, ColumnMetaData.PrimaryKey, true); //Mark the column as not nullable schemaService.SetColumnMetaData(createClassCommand.TableName, columnName, ColumnMetaData.Nullable, false); //Mark the column as an auto increasing column schemaService.SetColumnMetaData(createClassCommand.TableName, columnName, ColumnMetaData.AutoIncreaser, true); //Map the class to the table in the schema schemaService.MapClassToTable(name, createClassCommand.TableName); //Map the property to the column in the schema schemaService.MapPropertyToColumn(name, propertyName, createClassCommand.TableName, columnName); }