Exemplo n.º 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;
        }
Exemplo n.º 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;
        }