public void AlterDatabase() { var dbconn = this.FindDatabaseConnection(ConnPack); if (!AlterDatabaseVisible() || dbconn == null) { return; } var dbmem = new DatabaseStructureMembers(); dbmem.DatabaseOptions = true; var m_db = dbconn.InvokeLoadStructure(dbmem, null); var props = new DatabaseProperties { Name = dbconn.DatabaseName, SpecificData = m_db.SpecificData, }; if (DatabasePropertiesForm.Run(props, dbconn, true)) { var plan = new AlterPlan(); var opts = new DbDiffOptions(); plan.ChangeDatabaseOptions(dbconn.DatabaseName, props.SpecificData); plan.Transform(dbconn.Dialect.DumperCaps, opts, dbconn); string alterSql = dbconn.Dialect.GenerateScript(dmp => plan.CreateRunner().Run(dmp, opts)); if (SqlConfirmForm.Run(alterSql)) { dbconn.AlterDatabase(plan, opts); } } }
public static void AlterDatabase(this IAlterProcessor proc, IDatabaseStructure src, IDatabaseStructure dst, DbDiffOptions opts, IDatabaseSource targetDb, Action <AlterPlan> extendPlan) { AlterPlan plan = new AlterPlan(); DbDiffTool.AlterDatabase(plan, src, dst, opts); if (extendPlan != null) { extendPlan(plan); } plan.Transform(proc.AlterCaps, opts, targetDb); var run = plan.CreateRunner(); run.Run(proc, opts); }