Example #1
0
        private void CreateConnection(UpgradeServiceAccessor serviceAccessor)
        {
            var driver     = serviceAccessor.StorageDriver;
            var connection = driver.CreateConnection(null);

            driver.ApplyNodeConfiguration(connection, context.NodeConfiguration);

            try {
                driver.OpenConnection(null, connection);
                driver.BeginTransaction(null, connection, null);
            }
            catch {
                connection.Dispose();
                throw;
            }

            if (driver.ProviderInfo.Supports(ProviderFeatures.SingleConnection))
            {
                serviceAccessor.RegisterTemporaryResource(connection);
            }
            else
            {
                serviceAccessor.RegisterResource(connection);
            }

            serviceAccessor.Connection = connection;
        }
Example #2
0
        private async ValueTask CreateConnection(
            UpgradeServiceAccessor serviceAccessor, bool isAsync, CancellationToken token = default)
        {
            var driver     = serviceAccessor.StorageDriver;
            var connection = driver.CreateConnection(null);

            driver.ApplyNodeConfiguration(connection, context.NodeConfiguration);

            try {
                if (isAsync)
                {
                    await driver.OpenConnectionAsync(null, connection, token).ConfigureAwait(false);

                    await driver.BeginTransactionAsync(null, connection, null, token).ConfigureAwait(false);
                }
                else
                {
                    driver.OpenConnection(null, connection);
                    driver.BeginTransaction(null, connection, null);
                }
            }
            catch {
                if (isAsync)
                {
                    await connection.DisposeAsync().ConfigureAwait(false);
                }
                else
                {
                    connection.Dispose();
                }
                throw;
            }

            if (driver.ProviderInfo.Supports(ProviderFeatures.SingleConnection))
            {
                serviceAccessor.RegisterTemporaryResource(connection);
            }
            else
            {
                serviceAccessor.RegisterResource(connection);
            }

            serviceAccessor.Connection = connection;
        }
Example #3
0
        private void BuildExternalServices(UpgradeServiceAccessor serviceAccessor, DomainConfiguration configuration)
        {
            var standardRegistrations = new[] {
                new ServiceRegistration(typeof(DomainConfiguration), configuration),
                new ServiceRegistration(typeof(UpgradeContext), context)
            };

            var modules = configuration.Types.Modules
                          .Select(type => new ServiceRegistration(typeof(IModule), type, false));
            var handlers = configuration.Types.UpgradeHandlers
                           .Select(type => new ServiceRegistration(typeof(IUpgradeHandler), type, false));
            var ftCatalogResolvers = configuration.Types.FullTextCatalogResolvers
                                     .Select(type => new ServiceRegistration(typeof(IFullTextCatalogNameBuilder), type, false));

            var registrations    = standardRegistrations.Concat(modules).Concat(handlers).Concat(ftCatalogResolvers);
            var serviceContainer = new ServiceContainer(registrations);

            serviceAccessor.RegisterResource(serviceContainer);

            BuildModules(serviceAccessor, serviceContainer);
            BuildUpgradeHandlers(serviceAccessor, serviceContainer);
            BuildFullTextCatalogResolver(serviceAccessor, serviceContainer);
        }