コード例 #1
0
        private async Task Initialize()
        {
            if (!_instance.IsRunning)
            {
                _manager.Start();
            }

            using (var connection = _instance.CreateConnection())
            {
                await connection.OpenAsync();

                var tempPath       = Environment.GetEnvironmentVariable("Temp");
                var createDatabase = $"CREATE DATABASE [{_databaseName}] on (name='{_databaseName}', "
                                     + $"filename='{tempPath}\\{_databaseName}.mdf')";
                using (var command = new SqlCommand(createDatabase, connection))
                {
                    await command.ExecuteNonQueryAsync();
                }
            }

            var sqlConnectionStringBuilder = _instance.CreateConnectionStringBuilder();

            sqlConnectionStringBuilder.InitialCatalog = _databaseName;
            ConnectionString = sqlConnectionStringBuilder.ToString();
            var settings = new MsSqlStreamStoreV3Settings(ConnectionString);

            _msSqlStreamStoreV3 = new MsSqlStreamStoreV3(settings);
            await _msSqlStreamStoreV3.CreateSchemaIfNotExists();
        }
コード例 #2
0
        private async Task <IStreamStore> GetStreamStore(string schema)
        {
            var settings = new MsSqlStreamStoreV3Settings(ConnectionString)
            {
                Schema = schema,
                DisableDeletionTracking = _disableDeletionTracking
            };
            var store = new MsSqlStreamStoreV3(settings);
            await store.CreateSchemaIfNotExists();

            return(store);
        }
コード例 #3
0
        public MsSqlStreamStoreV3 CreateMsSqlStreamStore()
        {
            var settings = new MsSqlStreamStoreV3Settings(_configuration.ConnectionString)
            {
                DisableDeletionTracking = _configuration.DisableDeletionTracking
            };

            if (_configuration.Schema != null)
            {
                settings.Schema = _configuration.Schema;
            }

            return(new MsSqlStreamStoreV3(settings));
        }
コード例 #4
0
        public static async Task WithSqlStreamStore()
        {
            var connectionString = "Server=(local);Database=SqlStreamStoreDemo;Trusted_Connection=True;MultipleActiveResultSets=true";
            var settings         = new MsSqlStreamStoreV3Settings(connectionString);
            var streamStore      = new MsSqlStreamStoreV3(settings);
            await streamStore.CreateSchemaIfNotExists();

            repository = new SqlStreamStoreRepository <Counter>(streamStore);

            var counterId = Guid.Parse("fbb0f16b-646a-45d3-a1ee-596217897b62");

            await CreateAndSaveCounter(counterId);
            await LoadAndUpdateCounter(counterId);
        }
コード例 #5
0
        private void ConfigureMssql2019()
        {
            CreateMsSqlDatabaseUnlessExists();
            var connectionString = "Server=localhost;Database=memstate;User Id=sa;Password=abc123ABC;";

            _connection = new SqlConnection(connectionString);
            var settings = new MsSqlStreamStoreV3Settings(connectionString);

            settings.Schema = "memstate";
            var store = new MsSqlStreamStoreV3(settings);

            store.CreateSchemaIfNotExists().GetAwaiter().GetResult();
            _streamStore = store;
        }
コード例 #6
0
ファイル: SqlStreamStoreMigrator.cs プロジェクト: hfz-r/nbb
        private MsSqlStreamStoreV3 GetStore()
        {
            var configurationBuilder = new ConfigurationBuilder()
                                       .SetBasePath(Directory.GetCurrentDirectory())
                                       .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);

            var environment   = Environment.GetEnvironmentVariable("NETCORE_ENVIRONMENT");
            var isDevelopment = string.Equals(environment, "development", StringComparison.OrdinalIgnoreCase);

            if (isDevelopment)
            {
                configurationBuilder.AddUserSecrets(Assembly.GetCallingAssembly());
            }

            var configuration    = configurationBuilder.Build();
            var connectionString = configuration["EventStore:SqlStreamStore:ConnectionString"];
            var settings         = new MsSqlStreamStoreV3Settings(connectionString);
            var store            = new MsSqlStreamStoreV3(settings);

            return(store);
        }
コード例 #7
0
        private static async Task <IStreamStore> CreateMssqlStreamStore(
            string connectionString,
            string schema,
            CancellationToken cancellationToken)
        {
            var connectionStringBuilder = new SqlConnectionStringBuilder(connectionString);

            using (var connection = new SqlConnection(new SqlConnectionStringBuilder(connectionString)
            {
                InitialCatalog = "master"
            }.ConnectionString))
            {
                await connection.OpenAsync(cancellationToken).ConfigureAwait(false);

                using (var command = new SqlCommand(
                           $@"
IF  NOT EXISTS (SELECT name FROM sys.databases WHERE name = N'{connectionStringBuilder.InitialCatalog}')
BEGIN
    CREATE DATABASE [{connectionStringBuilder.InitialCatalog}]
END;
",
                           connection))
                {
                    await command.ExecuteNonQueryAsync(cancellationToken).ConfigureAwait(false);
                }
            }

            var settings = new MsSqlStreamStoreV3Settings(connectionString);

            if (schema != null)
            {
                settings.Schema = schema;
            }

            var streamStore = new MsSqlStreamStoreV3(settings);

            await streamStore.CreateSchemaIfNotExists(cancellationToken);

            return(streamStore);
        }
コード例 #8
0
        private int OnExecute(CommandLineApplication app)
        {
            if (string.IsNullOrEmpty(SQLDialect) || string.IsNullOrEmpty(Output))
            {
                app.ShowHelp();
                return(0);
            }

            var exitCode = 0;

            switch (SQLDialect.ToLowerInvariant())
            {
            case "mssqlv2":
#pragma warning disable 618
                var mssqlV2Settings = new MsSqlStreamStoreSettings(new SqlConnectionStringBuilder
                {
                    DataSource = "tcp:0.0.0.0,1433"
                }.ConnectionString);
                if (!string.IsNullOrEmpty(Schema))
                {
                    mssqlV2Settings.Schema = Schema;
                }

                if (CreateSchema)
                {
                    var script = string.Join(
                        Environment.NewLine,
                        $@"IF NOT EXISTS (
SELECT  schema_name
FROM    information_schema.schemata
WHERE   schema_name = '{Schema}' ) 

BEGIN
EXEC sp_executesql N'CREATE SCHEMA {Schema}'
END",
                        new MsSqlStreamStore(mssqlV2Settings).GetSchemaCreationScript());
                    File.WriteAllText(Output, script);
                }
                else
                {
                    File.WriteAllText(Output, new MsSqlStreamStore(mssqlV2Settings).GetSchemaCreationScript());
                }
#pragma warning restore 618
                break;

            case "mssqlv3":
                var mssqlV3Settings = new MsSqlStreamStoreV3Settings(new SqlConnectionStringBuilder
                {
                    DataSource = "tcp:0.0.0.0,1433"
                }.ConnectionString);
                if (!string.IsNullOrEmpty(Schema))
                {
                    mssqlV3Settings.Schema = Schema;
                }
                if (CreateSchema)
                {
                    var script = string.Join(
                        Environment.NewLine,
                        $@"IF NOT EXISTS (
SELECT  schema_name
FROM    information_schema.schemata
WHERE   schema_name = '{Schema}' ) 

BEGIN
EXEC sp_executesql N'CREATE SCHEMA {Schema}'
END",
                        new MsSqlStreamStoreV3(mssqlV3Settings).GetSchemaCreationScript());
                    File.WriteAllText(Output, script);
                }
                else
                {
                    File.WriteAllText(Output, new MsSqlStreamStoreV3(mssqlV3Settings).GetSchemaCreationScript());
                }

                break;

            case "mysql":
                var mysqlSettings = new MySqlStreamStoreSettings(new MySqlConnectionStringBuilder
                {
                    Server = "0.0.0.0"
                }.ConnectionString);
                if (!string.IsNullOrEmpty(Schema))
                {
                    Log.Information("The optional database schema does not apply to the mysql dialect and can be omitted: {Schema}", Schema);
                }
                File.WriteAllText(Output, new MySqlStreamStore(mysqlSettings).GetSchemaCreationScript());
                break;

            case "postgres":
                var postgresSettings = new PostgresStreamStoreSettings(new NpgsqlConnectionStringBuilder
                {
                    Host = "0.0.0.0"
                }.ConnectionString);
                if (!string.IsNullOrEmpty(Schema))
                {
                    postgresSettings.Schema = Schema;
                }

                if (CreateSchema)
                {
                    var script = string.Join(
                        Environment.NewLine,
                        $"CREATE SCHEMA IF NOT EXISTS {Schema};",
                        new PostgresStreamStore(postgresSettings).GetSchemaCreationScript()
                        );
                    File.WriteAllText(Output, script);
                }
                else
                {
                    File.WriteAllText(Output, new PostgresStreamStore(postgresSettings).GetSchemaCreationScript());
                }
                break;

            default:
                Log.Error("The SQL dialect was not recognized: {SQLDialect}", SQLDialect);
                exitCode = 1;
                break;
            }

            return(exitCode);
        }