Example #1
0
        private bool CheckAndPrintDiff(DbMsSqlMetadata metadata, List <MTable> list1, List <MTable> list2)
        {
            if (list1.Count == list2.Count)
            {
                return(true);
            }
            var maxCountList = (list1.Count > list2.Count) ? list1 : list2;
            var minCountList = (list1.Count < list2.Count) ? list1 : list2;

            foreach (var item in maxCountList)
            {
                var table = minCountList.FirstOrDefault(c => c.TableKey == item.TableKey);
                if (table == null)
                {
                    Trace.TraceInformation($"Lost table - {item.TableKey}");
                    foreach (DataRow row in metadata.Tables.Rows)
                    {
                        var table_catalog = row["table_catalog"]?.ToString();
                        var table_schema  = row["table_schema"]?.ToString();
                        var table_name    = row["table_name"]?.ToString();
                        var table_type    = row["table_type"]?.ToString();

                        if (table_name == item.Table_name)
                        {
                            Trace.TraceInformation($"  - exists in Tables {metadata.Tables.Rows.Count}/{metadata.TableList.Count}");
                        }
                    }
                    //var row = metadata.Tables.Rows[]
                }
            }

            return(false);
        }
Example #2
0
        public void CheckForLostTablesTest()
        {
            var cn          = 0;
            var tableCount  = -1;
            var columnCount = -1;
            var prevList    = new List <MTable>();
            var rs          = true;

            while (cn++ < 20)
            {
                var dbMeta = DbMsSqlMetadata.Load(ConnStr, 0);

                if (tableCount == -1)
                {
                    tableCount = dbMeta.TableList.Count;
                    continue;
                }

                Assert.AreEqual(dbMeta.TableList.Any(), true);

                if (prevList.Count != 0)
                {
                    rs = rs || CheckAndPrintDiff(dbMeta, dbMeta.TableList, prevList);
                }

                //Assert.AreEqual(dbMeta.TableList.Count, tableCount, "Is not equals tables count");// HOW ????

                prevList = dbMeta.TableList;
            }

            Assert.AreEqual(rs, true, "In some iteration has have lost table");
        }
Example #3
0
        public static DbMsSqlMetadata LoadWithJsonConfig()
        {
            // in some cases, you want to store the connection string in one place
            // for example, for T4 scripts and for test

            // in this example I use json file stored in a root path of solution

            // find roor path
            var rootPath   = GetSolutionPath("MsSqlMetadataLoader");
            var configFile = $"{rootPath}\\GenerationConfig.json";

            // load joson
            var jsonString = File.ReadAllText(configFile);

            // deserialize to config class
            var testConfig = JsonSerializer.Deserialize <GenerationConfig>(jsonString);

            // convert time out from sec to min
            var timeOutMin = testConfig.ReloadMetadataTimeoutSec / 60.0;

            // load metadata from db
            var meta = DbMsSqlMetadata.Load(testConfig.ConnectionString, timeOutMin);

            return(meta);
        }
Example #4
0
        public static DbMsSqlMetadata Load()
        {
            // easy way - to set a connection string in code

            // connection string specific for current project
            var connStr = @"Server=localhost\EX2017;Database=VTSDB3;Trusted_Connection=True;";

            // load metadata from db
            var meta = DbMsSqlMetadata.Load(connStr);

            // set extended data
            meta.TableList.ForEach(t =>
            {
                //TableAddAttributes - custom class
                t.Tag = new TableAddAttributes();
                t.GetTag <TableAddAttributes>().AddAttrList.Add("[PropGridAttr]");

                t.ColumnList.ForEach(c => {
                    c.Tag = new ColumnAddAttributes();
                    c.GetTag <ColumnAddAttributes>().AddAttrList.Add("[ColGridAttr]");
                });
            });

            return(meta);
        }
Example #5
0
        public void LoadMetadataTest()
        {
            var dbMeta = DbMsSqlMetadata.Load(ConnStr, 0.1);

            Assert.AreEqual(dbMeta.TableList.Any(), true);
        }