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); }
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"); }
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); }
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); }
public void LoadMetadataTest() { var dbMeta = DbMsSqlMetadata.Load(ConnStr, 0.1); Assert.AreEqual(dbMeta.TableList.Any(), true); }