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; }
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; }
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); }