internal static AccessorSetup GetSetup(DbAccessorType type, IDb db) { var aggregator = new DbAggregator(); var mapper = new DbMapper(db); Func <ISqlBuilder> builders; switch (type) { case DbAccessorType.MsSql: { Func <IMsSqlBuilder> msbuilders = () => new MsSqlBuilder(); var msscripter = new MsSqlScripter(db, msbuilders); return(new AccessorSetup(msscripter, mapper, aggregator)); } case DbAccessorType.SqLite: { builders = () => new SqLiteBuilder(); } break; case DbAccessorType.MySql: { builders = () => new MySqlBuilder(); } break; case DbAccessorType.Oracle: { builders = () => new OracleBuilder(); } break; default: throw new InvalidOperationException(string.Format("Unsupported DbAccessorType value of '{0}'", type)); } var scripter = new DbScripter(db, builders); return(new AccessorSetup(scripter, mapper, aggregator)); }
private void ExportFilesToScriptAndManifest(Urn[] objects, HashSet <Urn> hash = null) { const string fileNameFormat = "{0}_{1}.SQL"; using (var file = System.IO.File.CreateText(System.IO.Path.Combine(directory, ManifestFileName))) { foreach (var item in DbScripter.GetObjectsInDepedencyOrder(objects)) { if (hash == null || !hash.Contains(item)) { if (hash != null) { hash.Add(item); } string objName = null; var objEntity = DbScripter.Server.GetSmoObject(item); if (objEntity as View != null) { objName = (objEntity as View).Name; } else if (objEntity as Table != null) { objName = (objEntity as Table).Name; } else { throw new Exception(string.Format("Urn Type Not Expected: {0}", objEntity)); } if (objName != null) { var onlyData = DbScripter.Options.ScriptData; var fileName = string.Format(fileNameFormat, onlyData ? "Data" : item.Type, objName); file.WriteLine(fileName); DbScripter.Options.FileName = System.IO.Path.Combine(directory, fileName); Console.WriteLine($"Exporting... {fileName}"); DbScripter.EnumScript(new[] { item }); } } } } }