diff --git a/src/Umbraco.Infrastructure/Persistence/UmbracoDatabaseFactory.cs b/src/Umbraco.Infrastructure/Persistence/UmbracoDatabaseFactory.cs
index 299aff2caa..fd8bdc0269 100644
--- a/src/Umbraco.Infrastructure/Persistence/UmbracoDatabaseFactory.cs
+++ b/src/Umbraco.Infrastructure/Persistence/UmbracoDatabaseFactory.cs
@@ -6,6 +6,7 @@ using Microsoft.Extensions.Options;
using NPoco;
using NPoco.FluentMappings;
using Umbraco.Cms.Core;
+using Umbraco.Cms.Core.Configuration;
using Umbraco.Cms.Core.Configuration.Models;
using Umbraco.Cms.Infrastructure.Migrations.Install;
using Umbraco.Cms.Infrastructure.Persistence.FaultHandling;
@@ -72,6 +73,47 @@ namespace Umbraco.Cms.Infrastructure.Persistence
#region Constructors
+
+ ///
+ /// Initializes a new instance of the .
+ ///
+ /// Used by the other ctor and in tests.
+ internal UmbracoDatabaseFactory(
+ ILogger logger,
+ ILoggerFactory loggerFactory,
+ IOptions globalSettings,
+ IMapperCollection mappers,
+ IDbProviderFactoryCreator dbProviderFactoryCreator,
+ DatabaseSchemaCreatorFactory databaseSchemaCreatorFactory,
+ NPocoMapperCollection npocoMappers,
+ string connectionString)
+ {
+ _globalSettings = globalSettings;
+ _mappers = mappers ?? throw new ArgumentNullException(nameof(mappers));
+ _dbProviderFactoryCreator = dbProviderFactoryCreator ?? throw new ArgumentNullException(nameof(dbProviderFactoryCreator));
+ _databaseSchemaCreatorFactory = databaseSchemaCreatorFactory ?? throw new ArgumentNullException(nameof(databaseSchemaCreatorFactory));
+ _npocoMappers = npocoMappers;
+ _logger = logger ?? throw new ArgumentNullException(nameof(logger));
+ _loggerFactory = loggerFactory;
+
+ if (connectionString is null)
+ {
+ logger.LogDebug("Missing connection string, defer configuration.");
+ return; // not configured
+ }
+
+ var configConnectionString = new ConfigConnectionString("Custom", connectionString);
+ // could as well be
+ // so need to test the values too
+ if (configConnectionString.IsConnectionStringConfigured() == false)
+ {
+ logger.LogDebug("Empty connection string or provider name, defer configuration.");
+ return; // not configured
+ }
+
+ Configure(configConnectionString.ConnectionString, configConnectionString.ProviderName);
+ }
+
///
/// Initializes a new instance of the .
///
@@ -84,33 +126,10 @@ namespace Umbraco.Cms.Infrastructure.Persistence
IMapperCollection mappers,
IDbProviderFactoryCreator dbProviderFactoryCreator,
DatabaseSchemaCreatorFactory databaseSchemaCreatorFactory,
- NPocoMapperCollection npocoMappers)
+ NPocoMapperCollection npocoMappers):
+ this(logger, loggerFactory, globalSettings, mappers, dbProviderFactoryCreator, databaseSchemaCreatorFactory, npocoMappers, connectionStrings?.CurrentValue?.UmbracoConnectionString?.ConnectionString)
{
- _globalSettings = globalSettings;
- _mappers = mappers ?? throw new ArgumentNullException(nameof(mappers));
- _dbProviderFactoryCreator = dbProviderFactoryCreator ?? throw new ArgumentNullException(nameof(dbProviderFactoryCreator));
- _databaseSchemaCreatorFactory = databaseSchemaCreatorFactory ?? throw new ArgumentNullException(nameof(databaseSchemaCreatorFactory));
- _npocoMappers = npocoMappers;
- _logger = logger ?? throw new ArgumentNullException(nameof(logger));
- _loggerFactory = loggerFactory;
-
- var settings = connectionStrings.CurrentValue.UmbracoConnectionString;
- if (settings == null)
- {
- logger.LogDebug("Missing connection string, defer configuration.");
- return; // not configured
- }
-
- // could as well be
- // so need to test the values too
- if (settings.IsConnectionStringConfigured() == false)
- {
- logger.LogDebug("Empty connection string or provider name, defer configuration.");
- return; // not configured
- }
-
- Configure(settings.ConnectionString, settings.ProviderName);
}
#endregion
diff --git a/src/Umbraco.Infrastructure/Runtime/SqlMainDomLock.cs b/src/Umbraco.Infrastructure/Runtime/SqlMainDomLock.cs
index 8dee49a07c..8d1c74b619 100644
--- a/src/Umbraco.Infrastructure/Runtime/SqlMainDomLock.cs
+++ b/src/Umbraco.Infrastructure/Runtime/SqlMainDomLock.cs
@@ -62,11 +62,11 @@ namespace Umbraco.Cms.Infrastructure.Runtime
loggerFactory.CreateLogger(),
loggerFactory,
_globalSettings,
- connectionStrings,
new MapperCollection(() => Enumerable.Empty()),
dbProviderFactoryCreator,
databaseSchemaCreatorFactory,
- npocoMappers);
+ npocoMappers,
+ connectionStringName);
MainDomKey = MainDomKeyPrefix + "-" + (Environment.MachineName + MainDom.GetMainDomId(_hostingEnvironment)).GenerateHash();
}
@@ -88,18 +88,10 @@ namespace Umbraco.Cms.Infrastructure.Runtime
hostingEnvironment,
databaseSchemaCreatorFactory,
npocoMappers,
- Constants.System.UmbracoConnectionName
+ connectionStrings.CurrentValue.UmbracoConnectionString.ConnectionString
)
{
- loggerFactory.CreateLogger(),
- loggerFactory,
- _globalSettings,
- connectionStrings,
- new MapperCollection(() => Enumerable.Empty()),
- dbProviderFactoryCreator,
- databaseSchemaCreatorFactory,
- npocoMappers);
}
public async Task AcquireLockAsync(int millisecondsTimeout)