private bool RunActionAsSql(DbDiffAction action) { string sql = action.GenerateSql(m_dstDb); if (SqlConfirmForm.Run(sql)) { m_dstDb.Connection.Invoke(() => { var con = m_dstDb.Connection.SystemConnection; var tran = con.BeginTransaction(); var sqlo = new ConnectionSqlOutputStream(con, tran, m_dstDb.Dialect); try { con.ExecuteNonQueries(sql, m_dstDb.Connection.Dialect, tran, null); } catch { tran.Rollback(); throw; } tran.Commit(); }); //var dmp = m_dstDb.Dialect.CreateDumper(sqlo, new SqlFormatProperties()); //dmp.TargetDb = m_dstDb; //m_dstDb.Connection.Invoke(() => action.GenerateScript(dmp)); return(true); } return(false); }
public override bool Save() { var dialect = m_conn.Dialect ?? GenericDialect.Instance; var plan = new AlterPlan(); var opts = new DbDiffOptions(); var log = new CachingLogger(LogLevel.Info); opts.AlterLogger = log; DbDiffTool.AlterDatabase(plan, new DbObjectPairing(m_origDb, m_db), opts); string alterSql = dialect.GenerateScript(dmp => plan.CreateRunner().Run(dmp, opts)); if (!SqlConfirmForm.Run(alterSql, dialect, log)) { return(false); } m_conn.AlterDatabase(plan, opts); objectGridView1.Modified = false; UpdateState(); LoadStructure(); return(true); }