コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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));
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: fighting-dreamer/TinySql
        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);
        }
コード例 #4
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);
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: fighting-dreamer/TinySql
        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);
                }
            }
        }
コード例 #6
0
        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);
        }