コード例 #1
0
ファイル: Startup.cs プロジェクト: BionStt/emailmaker
        private void _UpgradeDatabase()
        {
            var configuration = IoC.Resolve <INhibernateConfigurator>().GetConfiguration();

            var connectionString      = configuration.Properties["connection.connection_string"];
            var connectionDriverClass = configuration.Properties["connection.driver_class"];
            var dbProviderName        = _GetDbProviderName(connectionDriverClass);

            var assemblyLocation   = _GetAssemblyLocation();
            var folderWithSqlFiles = Path.Combine(assemblyLocation, "EmailMaker.Database", dbProviderName);

            var builderOfDatabase = new BuilderOfDatabase(_getDbConnection);

            builderOfDatabase.BuildDatabase(folderWithSqlFiles);

            IDbConnection _getDbConnection()
            {
                switch (dbProviderName)
                {
                case string x when x.Contains("sqlite"):
                    return(new SQLiteConnection(connectionString));

                case string x when x.Contains("sqlserver"):
                    return(new SqlConnection(connectionString));

                case string x when x.Contains("postgresql"):
                    return(new NpgsqlConnection(connectionString));

                default:
                    throw new Exception("Unsupported NHibernate connection.driver_class");
                }
            }
        }
コード例 #2
0
        public void Context()
        {
            var builderOfDatabase = new BuilderOfDatabase(GetDbConnection);

            DropDatabaseObjectsToMakeDatabaseEmpty();

            builderOfDatabase.BuildDatabase(SqlFilesDirectoryPath);
        }
コード例 #3
0
        protected void Application_Start(object sender, EventArgs e)
        {
            var connectionString     = ConfigurationManager.ConnectionStrings["Legacy"].ConnectionString;
            var scriptsDirectoryPath = Path.Combine(_GetAssemblyLocation(), @"..\..\DatabaseScripts");
            var builderOfDatabase    = new BuilderOfDatabase(() => new SqlConnection(connectionString));

            builderOfDatabase.BuildDatabase(scriptsDirectoryPath);
        }
コード例 #4
0
        private void _BuildDatabase()
        {
            var connectionString     = ConfigurationManager.ConnectionStrings["Legacy"].ConnectionString;
            var scriptsDirectoryPath = Path.Combine(_GetAssemblyCodeBaseLocation(), @"..\..\DatabaseScripts");
            var builderOfDatabase    = new BuilderOfDatabase(() => new SqlConnection(connectionString));

            builderOfDatabase.BuildDatabase(scriptsDirectoryPath);
        }
        public void Context()
        {
            _loggedMessages = new List <string>();
            Action <string> logAction = loggedMessage => _loggedMessages.Add(loggedMessage);

            var builderOfDatabase = new BuilderOfDatabase(GetDbConnection, logAction: logAction);

            DropDatabaseObjectsToMakeDatabaseEmpty();

            builderOfDatabase.BuildDatabase(SqlFilesDirectoryPath);
        }
コード例 #6
0
        private void _BuildDatabase(IApplicationBuilder app)
        {
            var serviceProvider        = app.ApplicationServices;
            var nhibernateConfigurator = serviceProvider.GetService <INhibernateConfigurator>();
            var configuration          = nhibernateConfigurator.GetConfiguration();
            var connectionString       = configuration.Properties["connection.connection_string"];
            var scriptsDirectoryPath   = Path.Combine(_GetAssemblyCodeBaseLocation(), "DatabaseScripts");
            var builderOfDatabase      = new BuilderOfDatabase(() => new NpgsqlConnection(connectionString));

            builderOfDatabase.BuildDatabase(scriptsDirectoryPath);
        }
コード例 #7
0
        private void _CreateDatabase()
        {
            using (var nhibernateConfigurator = new CoreDddSharedNhibernateConfigurator())
            {
                var configuration        = nhibernateConfigurator.GetConfiguration();
                var connectionString     = configuration.Properties["connection.connection_string"];
                var scriptsDirectoryPath = Path.Combine(_GetAssemblyCodeBaseLocation(), "DatabaseScripts");

                var builderOfDatabase = new BuilderOfDatabase(() => new SqlConnection(connectionString));
                builderOfDatabase.BuildDatabase(scriptsDirectoryPath);
            }
        }
コード例 #8
0
        public void Context()
        {
            var builderOfDatabase = new BuilderOfDatabase(GetDbConnection, reRunnableScriptsDirectoryName: ReRunnableScriptsDirectoryName);

            DropDatabaseObjectsToMakeDatabaseEmpty();

            _hideReRunnableScriptsDirectory();

            builderOfDatabase.BuildDatabase(SqlFilesDirectoryPath);

            void _hideReRunnableScriptsDirectory()
            {
                _reRunnableScriptsDirectoryPath       = Path.Combine(SqlFilesDirectoryPath, ReRunnableScriptsDirectoryName);
                _hiddenReRunnableScriptsDirectoryPath = Path.Combine(SqlFilesDirectoryPath, ReRunnableScriptsDirectoryName + "_HIDDEN");

                Directory.Move(_reRunnableScriptsDirectoryPath, _hiddenReRunnableScriptsDirectoryPath);
            }
        }
コード例 #9
0
        public void SetUp()
        {
            _acquireSynchronizationMutex();

            CoreDddNhibernateInstaller.SetUnitOfWorkLifeStyle(x => x.PerThread);

            _windsorContainer = new WindsorContainer();
            _windsorContainer.Install(
                FromAssembly.Containing <CoreDddNhibernateInstaller>(),
                FromAssembly.Containing <EmailMakerNhibernateInstaller>()
                );
            IoC.Initialize(new CastleContainer(_windsorContainer));

            _buildDatabase();

            void _acquireSynchronizationMutex()
            {
                var mutexName = GetType().Namespace;

                _mutex = new Mutex(false, mutexName);
                if (!_mutex.WaitOne(TimeSpan.FromSeconds(60)))
                {
                    throw new Exception(
                              "Timeout waiting for synchronization mutex to prevent other .net frameworks running concurrent tests over the same database");
                }
            }

            void _buildDatabase()
            {
                var configuration = IoC.Resolve <INhibernateConfigurator>().GetConfiguration();

                var connectionString      = configuration.Properties["connection.connection_string"];
                var connectionDriverClass = configuration.Properties["connection.driver_class"];
                var dbProviderName        = _GetDbProviderName(connectionDriverClass);

                var assemblyLocation   = _GetAssemblyLocation();
                var folderWithSqlFiles = Path.Combine(assemblyLocation, "EmailMaker.Database", dbProviderName);

                var builderOfDatabase = new BuilderOfDatabase(createConnectionFunc: _createDbConnection);

                builderOfDatabase.BuildDatabase(folderWithSqlFiles);

                IDbConnection _createDbConnection()
                {
                    switch (dbProviderName)
                    {
                    case string x when x.Contains("sqlite"):
                        return(new SQLiteConnection(connectionString));

                    case string x when x.Contains("sqlserver"):
                        return(new SqlConnection(connectionString));

                    case string x when x.Contains("postgresql"):
                        return(new NpgsqlConnection(connectionString));

                    default:
                        throw new Exception("Unsupported NHibernate connection.driver_class");
                    }
                }
            }
        }