public void GenerateMetadataForDatabase() { Guid g = StopWatch.Start(); SqlMetadataDatabase meta = SqlMetadataDatabase.FromConnection(SqlBuilder.DefaultConnection); MetadataDatabase mdb = meta.BuildMetadata(); Console.WriteLine(StopWatch.Stop(g, StopWatch.WatchTypes.Seconds, "Metadata generated in {0}s")); Console.WriteLine("Database contains {0} tables and a total of {1} columns", mdb.Tables.Count, mdb.Tables.Values.SelectMany(x => x.Columns).Count()); string FileName = System.IO.Path.Combine(System.IO.Path.GetTempPath(), System.IO.Path.GetRandomFileName() + ".json"); string FileName2 = System.IO.Path.Combine(System.IO.Path.GetTempPath(), System.IO.Path.GetRandomFileName() + ".bson"); g = StopWatch.Start(); mdb.ToFile(FileName); Console.WriteLine("Metadata persisted as {0} in {1}ms", FileName, StopWatch.Stop(g, StopWatch.WatchTypes.Milliseconds)); g = StopWatch.Start(); mdb = SerializationExtensions.FromFile(FileName); Console.WriteLine("Metadata read from file '{0}' in {1}ms", FileName, StopWatch.Stop(g, StopWatch.WatchTypes.Milliseconds)); g = StopWatch.Start(); SerializationExtensions.ToFile <MetadataDatabase>(mdb, FileName2, true, false, SerializerFormats.Bson); Console.WriteLine("Metadata persisted as bson {0} in {1}ms", FileName2, StopWatch.Stop(g, StopWatch.WatchTypes.Milliseconds)); g = StopWatch.Start(); mdb = SerializationExtensions.FromFile <MetadataDatabase>(FileName2, SerializerFormats.Bson); Console.WriteLine("Metadata read from file '{0}' in {1}ms", FileName2, StopWatch.Stop(g, StopWatch.WatchTypes.Milliseconds)); FileInfo fi = new FileInfo(FileName); Console.WriteLine("The File {1} is {0:0.00}MB in size", (double)fi.Length / (double)(1024 * 1024), FileName); fi = new FileInfo(FileName2); Console.WriteLine("The File {1} is {0:0.00}MB in size", (double)fi.Length / (double)(1024 * 1024), FileName2); File.Delete(FileName); File.Delete(FileName2); Assert.IsTrue(!File.Exists(FileName)); Assert.IsTrue(!File.Exists(FileName2)); }
public static SqlBuilder WithMetadata(this SqlBuilder builder, bool UseCache = true, string FileName = null) { SqlMetadataDatabase db = SqlMetadataDatabase.FromBuilder(builder, UseCache, FileName); builder.Metadata = db.BuildMetadata(); return(builder); }
private static int CreateMetadata(bool Update = false) { ConsoleColor c = Console.ForegroundColor; try { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Connecting to " + ConnectionString); SqlMetadataDatabase db = SqlMetadataDatabase.FromConnection(ConnectionString, Update, File.Exists(OutputFile) ? OutputFile : null); Console.WriteLine("{0} metadata for {1} tables and views...", Update ? "Updating" : "Building", Tables == null ? "all" : Tables.Length.ToString()); if (Update) { db.FileName = OutputFile; } db.MetadataUpdateEvent += db_MetadataUpdateEvent; if (Update && !File.Exists(OutputFile)) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("'Update' was specified but the file {0} does not exist. 'Create' will be used in stead", OutputFile); Console.ForegroundColor = ConsoleColor.Yellow; Update = false; db.FileName = null; } MetadataDatabase mdb = db.BuildMetadata(true, Tables, Update); Console.WriteLine("Done. Metadata contains {0} tables", mdb.Tables.Count); Console.WriteLine("Saving metadata in the file {0}", OutputFile); ClassCreationOptions.MetadataEvent = new MetadataUpdateDelegate(db_MetadataUpdateEvent); ClassGenerator.CreateClasses(mdb); mdb.ToFile(OutputFile); return(0); } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(ex.Message); return(1); } finally { Console.ForegroundColor = c; if (PromptUser) { Console.Write("Finished. Press any key to exit"); Console.ReadKey(true); } } }