Dashing.IntegrationTests.Setup.DatabaseInitializer.Initialize C# (CSharp) Method

Initialize() public method

        public TestSessionWrapper Initialize() {
            var dialect = new DialectFactory().Create(this.configuration.ConnectionStringSettings);
                
            // load the data
            using (var transactionLessSession = this.configuration.BeginTransactionLessSession()) {
                // create database if exists
                if (!dialect.IgnoreMultipleDatabases) {
                    if (transactionLessSession.Dapper.Query(dialect.CheckDatabaseExists(DatabaseName)).Any()) {
                        transactionLessSession.Dapper.Execute("drop database " + DatabaseName);
                    }

                    transactionLessSession.Dapper.Execute("create database " + DatabaseName);
                    transactionLessSession.Dapper.Execute("use " + DatabaseName);
                }
                
                var migrator = new Migrator(
                    dialect,
                    new CreateTableWriter(dialect),
                    new AlterTableWriter(dialect),
                    new DropTableWriter(dialect),
                    new StatisticsProvider(null, dialect));
                IEnumerable<string> warnings, errors;
                var createStatement = migrator.GenerateSqlDiff(
                    new List<IMap>(),
                    this.configuration.Maps,
                    null,
                    new Mock<ILogger>().Object,
                    new string[0],
                    new string[0],
                    out warnings,
                    out errors);
                var statements = createStatement.Split(';');
                foreach (var statement in statements.Where(s => !string.IsNullOrWhiteSpace(s.Trim()))) {
                    transactionLessSession.Dapper.Execute(statement);
                }
            }

            var session = this.configuration.BeginSession();
            if (!dialect.IgnoreMultipleDatabases) {
                session.Dapper.Execute("use " + DatabaseName);
            }

            this.InsertData(session);
            return new TestSessionWrapper(session);
        }

Usage Example

        static TestDatabaseGenerator() {
            // delete the sqlite db if exists
            if (File.Exists("testdb.db")) {
                File.Delete("testdb.db");
            }

            // generate all the sessions
            var configurationTypes = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.Namespace == "Dashing.IntegrationTests.Setup" && typeof(IConfiguration).IsAssignableFrom(t)).ToArray();
            foreach (var configurationType in configurationTypes) {
                var configuration = (IConfiguration)Activator.CreateInstance(configurationType);
                var dbInitializer = new DatabaseInitializer(configuration);
                TestSessions.Add(dbInitializer.Initialize());
            }
        }
All Usage Examples Of Dashing.IntegrationTests.Setup.DatabaseInitializer::Initialize