Beispiel #1
0
        public void CreateEntrys(string connection, string outputPath, string database)
        {
            TargetDir = outputPath;
            Manager   = new DbAccessLayer(DbAccessType.MsSql, connection);
            bool checkDatabase;

            try
            {
                checkDatabase = Manager.CheckDatabase();
            }
            catch (Exception)
            {
                checkDatabase = false;
            }

            if (!checkDatabase)
            {
                throw new Exception("Database not accessible. Maybe wrong Connection or no Selected Database?");
            }
            var databaseName = string.IsNullOrEmpty(Manager.Database.DatabaseName) ? database : Manager.Database.DatabaseName;

            if (string.IsNullOrEmpty(databaseName))
            {
                throw new Exception("Database not exists. Maybe wrong Connection or no Selected Database?");
            }
            WinConsole.WriteLine("Connection OK ... Reading Server Version ...");

            SqlVersion = Manager.RunSelect <string>(Manager.Database.CreateCommand("SELECT SERVERPROPERTY('productversion')")).FirstOrDefault();

            WinConsole.WriteLine("Server version is {0}", SqlVersion);

            WinConsole.WriteLine("Reading Tables from {0} ...", databaseName);

            Tables = Manager.Select <TableInformations>()
                     .ToArray()
                     .AsParallel()
                     .Select(s => new TableInfoModel(s, databaseName, new DbAccessLayer(DbAccessType.MsSql, connection)))
                     .ToList();

            Views = Manager.Select <ViewInformation>()
                    .ToArray()
                    .AsParallel()
                    .Select(s => new TableInfoModel(s, databaseName, new DbAccessLayer(DbAccessType.MsSql, connection)))
                    .ToList();

            StoredProcs = Manager.Select <StoredProcedureInformation>()
                          .Select(s => new StoredPrcInfoModel(s))
                          .ToList();

            WinConsole.WriteLine(
                "Found {0} Tables, {1} Views, {2} Procedures ... select a Table to see Options or start an Action", Tables.Count(),
                Views.Count(), StoredProcs.Count());
            Enums = new List <Dictionary <int, string> >();
            RenderMenu();
        }
Beispiel #2
0
        public DbAccessLayer GetWrapper()
        {
            DbAccessLayer expectWrapper = null;
            var           elementType   = GetElementType();

            expectWrapper = _managers[elementType].GetWrapper();

            //if (elementType == DbAccessType.MsSql)
            //{
            //	expectWrapper = new MsSqlManager().GetWrapper();
            //}
            //else if (elementType == DbAccessType.SqLite)
            //{
            //	expectWrapper = new SqLiteManager().GetWrapper();
            //}

            _errorData = new StringBuilder();
            expectWrapper.RaiseEvents = true;
            expectWrapper.OnSelect   += (sender, eventArg) =>
            {
                _errorData.AppendFormat(@"SELECT: \r\n{0}", eventArg.QueryDebugger);
                _errorData.AppendLine();
            };

            expectWrapper.OnDelete += (sender, eventArg) =>
            {
                _errorData.AppendFormat(@"DELETE: \r\n{0}", eventArg.QueryDebugger);
                _errorData.AppendLine();
            };

            expectWrapper.OnInsert += (sender, eventArg) =>
            {
                _errorData.AppendFormat(@"INSERT: \r\n{0}", eventArg.QueryDebugger);
                _errorData.AppendLine();
            };

            expectWrapper.OnUpdate += (sender, eventArg) =>
            {
                _errorData.AppendFormat(@"Update: \r\n{0}", eventArg.QueryDebugger);
                _errorData.AppendLine();
            };

            Assert.NotNull(expectWrapper, "This test cannot run as no Database Variable is defined");
            bool checkDatabase = expectWrapper.CheckDatabase();

            Assert.IsTrue(checkDatabase);

            expectWrapper.Config.ConstructorSettings.FileCollisonDetection = CollisonDetectionMode.Pessimistic;
            expectWrapper.Config.ConstructorSettings.CreateDebugCode       = false;
            expectWrapper.Multipath          = true;
            QueryDebugger.UseDefaultDatabase = expectWrapper.DatabaseStrategy;
            return(expectWrapper);
        }
Beispiel #3
0
        public DbAccessLayer GetWrapper(DbAccessType type, params object[] additionalArguments)
        {
            DbAccessLayer expectWrapper = null;

            _errorData.AppendLine("---------------------------------------------");
            _errorData.AppendLine("Found " + type);

            Assert.That(new DbConfig().SClassInfoCaches, Is.Empty, () => "The Global Class cache is not empty");
            var testClassName = TestContext.CurrentContext.Test.ClassName.Replace(typeof(Manager).Namespace, "")
                                .Where(e => char.IsUpper(e)).Select(e => e.ToString())
                                .Aggregate((e, f) => e + f) + "." +
                                TestContext.CurrentContext.Test.MethodName;

            testClassName = testClassName + "_" + Guid.NewGuid().ToString("N");
            testClassName = new Regex("[^a-zA-Z0-9]").Replace(testClassName, "_");
            _errorData.AppendLine($"Attach to Database: {testClassName}");

            expectWrapper = (_selectedMgr = _managers[type]()).GetWrapper(type, testClassName);
            expectWrapper.Config.EnableInstanceThreadSafety = true;


            expectWrapper.RaiseEvents      = true;
            expectWrapper.RaiseEventsAsync = false;
            expectWrapper.OnSelect        += (sender, eventArg) =>
            {
                _querys.Add(new KeyValuePair <string, string>("SELECT", eventArg.QueryDebugger.ToString()));
            };

            expectWrapper.OnDelete += (sender, eventArg) =>
            {
                _querys.Add(new KeyValuePair <string, string>("DELETE", eventArg.QueryDebugger.ToString()));
            };

            expectWrapper.OnInsert += (sender, eventArg) =>
            {
                _querys.Add(new KeyValuePair <string, string>("INSERT", eventArg.QueryDebugger.ToString()));
            };

            expectWrapper.OnUpdate += (sender, eventArg) =>
            {
                _querys.Add(new KeyValuePair <string, string>("UPDATE", eventArg.QueryDebugger.ToString()));
            };

            expectWrapper.OnNonResultQuery += (sender, eventArg) =>
            {
                _querys.Add(new KeyValuePair <string, string>("Query", eventArg.QueryDebugger.ToString()));
            };

            expectWrapper.OnFailedQuery += (sender, eventArg, exception) =>
            {
                _querys.Add(new KeyValuePair <string, string>("Query Failed", eventArg.QueryDebugger.ToString()));
            };

            Assert.NotNull(expectWrapper, "This test cannot run as no Database Variable is defined");
            var checkDatabase = expectWrapper.CheckDatabase();

            Assert.IsTrue(checkDatabase);
            AllTestContextHelper.TestSetup(expectWrapper.Config.ConstructorSettings);
            expectWrapper.Multipath = true;
            return(expectWrapper);
        }
Beispiel #4
0
        public async Task CreateEntrysAsync(string connection, string outputPath, string database)
        {
            Status = "Try to connect";
            //Data Source=(LocalDb)\ProjectsV12;Integrated Security=True;Database=TestDB;
            IsEnumeratingDatabase = true;
            TargetDir             = outputPath;


            var checkDatabase = false;

            if (connection.StartsWith("file:\\\\"))
            {
                MsSqlStructure = new DacpacMsSqlStructure(connection.Replace("file:\\\\", ""));
            }
            else
            {
                var dbAccessLayer = new DbAccessLayer(DbAccessType.MsSql, connection);
                MsSqlStructure = new DatabaseMsSqlStructure(dbAccessLayer);
                try
                {
                    checkDatabase = dbAccessLayer.CheckDatabase();
                }
                catch (Exception)
                {
                    IsEnumeratingDatabase = false;
                    Connected             = false;
                    checkDatabase         = false;
                }

                var databaseName = string.IsNullOrEmpty(MsSqlStructure.GetDatabaseName())
                                        ? database
                                        : MsSqlStructure.GetDatabaseName();
                if (string.IsNullOrEmpty(databaseName))
                {
                    IsEnumeratingDatabase = false;
                    Status    = "Database not exists. Maybe wrong Connection or no Selected Database?";
                    Connected = false;
                    return;
                }
            }

            DbConfig.EnableGlobalThreadSafety = true;
            if (!Connected)
            {
                IsEnumeratingDatabase = false;
                Status = "Database not accessible. Maybe wrong Connection or no Selected Database?";
                return;
            }


            Status = "Connection OK ... Reading Server Version ...";

            //SqlVersion = Manager.RunPrimetivSelect<string>("SELECT SERVERPROPERTY('productversion')").FirstOrDefault();
            Status = "Reading Tables";

            var counter      = 2;
            var createTables = SimpleWork(() =>
            {
                var tables = MsSqlStructure.GetTables()
                             .Select(
                    s =>
                    new TableInfoModel(s, MsSqlStructure.GetDatabaseName(),
                                       MsSqlStructure))
                             .Select(s => new TableInfoViewModel(s, this))
                             .ToList();
                foreach (var source in tables)
                {
                    if (Tables.All(f => f.Info.TableName != source.Info.TableName))
                    {
                        Tables.Add(source);
                    }
                }
            });
            var createViews = SimpleWork(() =>
            {
                var views =
                    MsSqlStructure.GetViews()
                    .Select(s => new TableInfoModel(s, MsSqlStructure.GetDatabaseName(), MsSqlStructure))
                    .Select(s => new TableInfoViewModel(s, this))
                    .ToList();

                foreach (var source in views)
                {
                    if (Views.All(f => f.Info.TableName != source.Info.TableName))
                    {
                        Views.Add(source);
                    }
                }
            });

            await createTables;
            await createViews;

            SelectedTable = Tables.FirstOrDefault();

            IsEnumeratingDatabase = false;
            Status = "Done";
        }
Beispiel #5
0
        public DbAccessLayer GetWrapper(DbAccessType type, params object[] additionalArguments)
        {
            DbAccessLayer expectWrapper = null;

            _errorData.AppendLine("---------------------------------------------");
            _errorData.AppendLine("Found " + type);

            Assert.That(new DbConfig().SClassInfoCaches, Is.Empty, () => "The Global Class cache is not empty");
            var testClassName = TestContext.CurrentContext.Test.ClassName.Replace(typeof(Manager).Namespace, "").Where(e => char.IsUpper(e)).Select(e => e.ToString())
                                .Aggregate((e, f) => e + f) + "." +
                                TestContext.CurrentContext.Test.MethodName;


            //var arguments =
            //		additionalArguments.Select(
            //		                           f =>
            //		                           {
            //			                           if (f == null)
            //			                           {
            //				                           return TestContext.CurrentContext.Random.NextShort().ToString();
            //			                           }

            //			                           if (typeof(string).Assembly.GetTypes().Contains(f.GetType()))
            //			                           {
            //				                           return f.ToString();
            //			                           }

            //			                           return f.GetHashCode().ToString();
            //		                           })
            //		                   .ToArray();

            //if (arguments.Any())
            //{
            //	testClassName =
            //}
            testClassName = testClassName + "_" + Guid.NewGuid().ToString("N");
            testClassName = new Regex("[^a-zA-Z0-9]").Replace(testClassName, "_");
            _errorData.AppendLine($"Attach to Database: {testClassName}");

            expectWrapper = (_selectedMgr = _managers[type]()).GetWrapper(type, testClassName);
            expectWrapper.Config.EnableInstanceThreadSafety = true;


            expectWrapper.RaiseEvents = true;
            expectWrapper.OnSelect   += (sender, eventArg) =>
            {
                _errorData.AppendFormat(@"SELECT: \r\n{0}", eventArg.QueryDebugger);
                _errorData.AppendLine();
            };

            expectWrapper.OnDelete += (sender, eventArg) =>
            {
                _errorData.AppendFormat(@"DELETE: \r\n{0}", eventArg.QueryDebugger);
                _errorData.AppendLine();
            };

            expectWrapper.OnInsert += (sender, eventArg) =>
            {
                _errorData.AppendFormat(@"INSERT: \r\n{0}", eventArg.QueryDebugger);
                _errorData.AppendLine();
            };

            expectWrapper.OnUpdate += (sender, eventArg) =>
            {
                _errorData.AppendFormat(@"UPDATE: \r\n{0}", eventArg.QueryDebugger);
                _errorData.AppendLine();
            };

            expectWrapper.OnFailedQuery += (sender, eventArg, exception) =>
            {
                _errorData.AppendFormat(@"Query Failed: \r\n{0}\r\n{1}", eventArg.QueryDebugger, exception);
                _errorData.AppendLine();
            };

            Assert.NotNull(expectWrapper, "This test cannot run as no Database Variable is defined");
            var checkDatabase = expectWrapper.CheckDatabase();

            Assert.IsTrue(checkDatabase);
            AllTestContextHelper.TestSetup(expectWrapper.Config.ConstructorSettings);
            expectWrapper.Multipath = true;
            return(expectWrapper);
        }
Beispiel #6
0
        public void CreateEntrys(string connection, string outputPath, string database)
        {
            TargetDir = outputPath;
            bool checkDatabase = false;

            if (connection.StartsWith("file:\\\\"))
            {
                MsSqlStructure = new DacpacMsSqlStructure(connection.Replace("file:\\\\", ""));
                checkDatabase  = true;
            }
            else
            {
                var dbAccessLayer = new DbAccessLayer(DbAccessType.MsSql, connection);
                MsSqlStructure = new DatabaseMsSqlStructure(dbAccessLayer);
                try
                {
                    checkDatabase = dbAccessLayer.CheckDatabase();
                }
                catch (Exception)
                {
                    checkDatabase = false;
                }

                var databaseName = string.IsNullOrEmpty(dbAccessLayer.Database.DatabaseName) ? database : dbAccessLayer.Database.DatabaseName;
                if (string.IsNullOrEmpty(databaseName))
                {
                    throw new Exception("Database not exists. Maybe wrong Connection or no Selected Database?");
                }
            }


            if (!checkDatabase)
            {
                throw new Exception("Database not accessible. Maybe wrong Connection or no Selected Database?");
            }

            WinConsole.WriteLine("Connection OK ... Reading Server Version ...");

            SqlVersion = MsSqlStructure.GetVersion().ToString();

            WinConsole.WriteLine("Server version is {0}", SqlVersion);

            WinConsole.WriteLine("Reading Tables from {0} ...", MsSqlStructure.GetDatabaseName());

            Tables = MsSqlStructure.GetTables()
                     //.AsParallel()
                     .Select(s => new TableInfoModel(s, MsSqlStructure.GetDatabaseName(), MsSqlStructure))
                     .ToList();

            Views = MsSqlStructure.GetViews()
                    //.AsParallel()
                    .Select(s => new TableInfoModel(s, MsSqlStructure.GetDatabaseName(), MsSqlStructure))
                    .ToList();

            StoredProcs = MsSqlStructure.GetStoredProcedures()
                          .Select(s => new StoredPrcInfoModel(s))
                          .ToList();

            WinConsole.WriteLine(
                "Found {0} Tables, {1} Views, {2} Procedures ... select a Table to see Options or start an Action", Tables.Count(),
                Views.Count(), StoredProcs.Count());
            Enums = new List <Dictionary <int, string> >();
            RenderMenu();
        }