public override void RunCommand() { IDatabaseSource srcDb = m_source.GetConnection(); IDatabaseSource dstDb = m_target.GetConnection(); Async.SafeOpen(srcDb.Connection); Async.SafeOpen(dstDb.Connection); var src = srcDb.InvokeLoadStructure(DatabaseStructureMembers.FullStructure, null); var dst = dstDb.InvokeLoadStructure(DatabaseStructureMembers.FullStructure, null); var opts = new DbDiffOptions(); opts.IgnoreColumnOrder = true; //var diff = new DatabaseDiff(src, dst, opts); ISqlDialect dial; if (Dialect != null) { dial = (ISqlDialect)DialectAddonType.Instance.FindHolder(Dialect).CreateInstance(); } else { dial = new GenericDialect(); } using (TextWriter fw = GetOutputStream()) { SqlOutputStream so = new SqlOutputStream(dial, fw, new SqlFormatProperties()); ISqlDumper dmp = dial.CreateDumper(so, new SqlFormatProperties()); dmp.AlterDatabase(src, dst, opts, new DbDefSource(src, DbDefSource.ReadOnly.Flag)); //dmp.TargetDb = new DbDefSource(dst, DbDefSource.ReadOnly.Flag); //diff.Actions.GenerateScript(dmp); } Async.SafeClose(srcDb.Connection); Async.SafeClose(dstDb.Connection); }
protected string GenerateSqlScript(Action <ISqlDumper> dmpFunc) { var sw = new StringWriter(); var sqlo = new SqlOutputStream(DatabaseFactory.CreateDialect(), sw, new SqlFormatProperties()); var dmp = DatabaseFactory.CreateDumper(sqlo, new SqlFormatProperties()); dmpFunc(dmp); return(sw.ToString()); }
public static string GenerateScript(this IDatabaseFactory factory, Action <ISqlDumper> script, SqlFormatProperties props) { StringWriter sw = new StringWriter(); ISqlDumper dmp; var so = new SqlOutputStream(factory.CreateDialect(), sw, props); dmp = factory.CreateDumper(so, props); script(dmp); return(sw.ToString()); }
public SqlGeneratorModel(IConnectionProvider provider, TextWriter stream, GenerateSql options, DatabaseInfo database, ICancelableProcessCallback cancelable, Action <string> logger) { _cancelable = cancelable; _provider = provider; _logger = logger; _factory = _provider.Factory; _sqlo = new SqlOutputStream(_factory.CreateDialect(), stream, new SqlFormatProperties()); _dmp = _factory.CreateDumper(_sqlo, new SqlFormatProperties()); _options = options; _database = database; _dialectCaps = _factory.DialectCaps; FillWorkingSets(); }