/// <summary> /// Requires the Adventure Works Sample Database for SQL 2014: https://msftdbprodsamples.codeplex.com/releases/view/125550 /// </summary> /// <returns></returns> public static bool Setup() { if (SqlBuilder.DefaultConnection == null) { SqlBuilder.DefaultConnection = "Data Source=(localdb)\\ProjectsV12;Initial Catalog=TinyCrm;Integrated Security=True"; } if (SqlBuilder.DefaultMetadata == null) { if (!File.Exists(_MetadataFileName)) { MetadataDatabase mdb = SqlMetadataDatabase.FromConnection(SqlBuilder.DefaultConnection, true).BuildMetadata(); mdb.ToFile(_MetadataFileName); SqlBuilder.DefaultMetadata = mdb; } else { SqlBuilder.DefaultMetadata = SerializationExtensions.FromFile(_MetadataFileName); } } // General options for SqlBuilder //string dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); //SqlBuilder.DefaultConnection = string.Format("Server=(localdb)\\ProjectsV12;Database=TinyCrm;Trusted_Connection=Yes", dir); return(true); }
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)); }
private static int ExportProperties() { ConsoleColor c = Console.ForegroundColor; try { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("Connecting to " + ConnectionString); SqlMetadataDatabase db = SqlMetadataDatabase.FromConnection(ConnectionString, true, File.Exists(OutputFile) ? OutputFile : null); db.MetadataUpdateEvent += db_MetadataUpdateEvent; DatabaseExtendedProperties props = db.ExportExtendedProperties(); SerializationExtensions.ToFile <DatabaseExtendedProperties>(props, OutputFile, true); Console.WriteLine("Properties saved to {0}", OutputFile); } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(ex.Message); return(1); } finally { Console.ForegroundColor = c; } return(0); }
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); } } }
public void GenerateMetadataTwoTimesUsingCaching() { Guid g = StopWatch.Start(); SqlBuilder b1 = SqlBuilder.Select().WithMetadata(); Console.WriteLine(StopWatch.Stop(g, StopWatch.WatchTypes.Seconds, "Metadata Pass 1/2: Metadata serialized to cache and SqlBuilder ready in {0}s")); g = StopWatch.Start(); SqlBuilder b2 = SqlBuilder.Select().WithMetadata(); Console.WriteLine(StopWatch.Stop(g, StopWatch.WatchTypes.Milliseconds, "Metadata Pass 2/2: Metadata serialized from cache and SqlBuilder ready in {0}ms")); Console.WriteLine("Removing Metadata from cache"); bool b = SqlMetadataDatabase.FromBuilder(b2).ClearMetadata(); Assert.IsTrue(b1.Metadata != null); Assert.IsTrue(b2.Metadata != null); Assert.IsTrue(b); }